@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.
- package/mcp-server/dist/common/config.d.ts +27 -0
- package/mcp-server/dist/common/config.d.ts.map +1 -0
- package/mcp-server/dist/common/config.js +27 -0
- package/mcp-server/dist/common/config.js.map +1 -0
- package/mcp-server/dist/common/index.d.ts +3 -0
- package/mcp-server/dist/common/index.d.ts.map +1 -0
- package/mcp-server/dist/common/index.js +19 -0
- package/mcp-server/dist/common/index.js.map +1 -0
- package/mcp-server/dist/common/paths.d.ts +13 -0
- package/mcp-server/dist/common/paths.d.ts.map +1 -0
- package/mcp-server/dist/common/paths.js +23 -0
- package/mcp-server/dist/common/paths.js.map +1 -0
- package/mcp-server/dist/helpers/docs.helper.d.ts +81 -0
- package/mcp-server/dist/helpers/docs.helper.d.ts.map +1 -0
- package/mcp-server/dist/helpers/docs.helper.js +171 -0
- package/mcp-server/dist/helpers/docs.helper.js.map +1 -0
- package/mcp-server/dist/helpers/index.d.ts +3 -0
- package/mcp-server/dist/helpers/index.d.ts.map +1 -0
- package/mcp-server/dist/helpers/index.js +19 -0
- package/mcp-server/dist/helpers/index.js.map +1 -0
- package/mcp-server/dist/helpers/logger.helper.d.ts +7 -0
- package/mcp-server/dist/helpers/logger.helper.d.ts.map +1 -0
- package/mcp-server/dist/helpers/logger.helper.js +22 -0
- package/mcp-server/dist/helpers/logger.helper.js.map +1 -0
- package/mcp-server/dist/index.d.ts +3 -0
- package/mcp-server/dist/index.d.ts.map +1 -0
- package/mcp-server/dist/index.js +62 -0
- package/mcp-server/dist/index.js.map +1 -0
- package/mcp-server/dist/tools/base.tool.d.ts +98 -0
- package/mcp-server/dist/tools/base.tool.d.ts.map +1 -0
- package/mcp-server/dist/tools/base.tool.js +47 -0
- package/mcp-server/dist/tools/base.tool.js.map +1 -0
- package/mcp-server/dist/tools/get-doc-content.tool.d.ts +30 -0
- package/mcp-server/dist/tools/get-doc-content.tool.d.ts.map +1 -0
- package/mcp-server/dist/tools/get-doc-content.tool.js +127 -0
- package/mcp-server/dist/tools/get-doc-content.tool.js.map +1 -0
- package/mcp-server/dist/tools/get-doc-metadata.tool.d.ts +40 -0
- package/mcp-server/dist/tools/get-doc-metadata.tool.d.ts.map +1 -0
- package/mcp-server/dist/tools/get-doc-metadata.tool.js +121 -0
- package/mcp-server/dist/tools/get-doc-metadata.tool.js.map +1 -0
- package/mcp-server/dist/tools/index.d.ts +8 -0
- package/mcp-server/dist/tools/index.d.ts.map +1 -0
- package/mcp-server/dist/tools/index.js +18 -0
- package/mcp-server/dist/tools/index.js.map +1 -0
- package/mcp-server/dist/tools/list-categories.tool.d.ts +20 -0
- package/mcp-server/dist/tools/list-categories.tool.d.ts.map +1 -0
- package/mcp-server/dist/tools/list-categories.tool.js +105 -0
- package/mcp-server/dist/tools/list-categories.tool.js.map +1 -0
- package/mcp-server/dist/tools/list-docs.tool.d.ts +32 -0
- package/mcp-server/dist/tools/list-docs.tool.d.ts.map +1 -0
- package/mcp-server/dist/tools/list-docs.tool.js +121 -0
- package/mcp-server/dist/tools/list-docs.tool.js.map +1 -0
- package/mcp-server/dist/tools/search-docs.tool.d.ts +32 -0
- package/mcp-server/dist/tools/search-docs.tool.d.ts.map +1 -0
- package/mcp-server/dist/tools/search-docs.tool.js +120 -0
- package/mcp-server/dist/tools/search-docs.tool.js.map +1 -0
- package/package.json +102 -0
- package/wiki/get-started/5-minute-quickstart.md +266 -0
- package/wiki/get-started/best-practices/api-usage-examples.md +222 -0
- package/wiki/get-started/best-practices/architectural-patterns.md +129 -0
- package/wiki/get-started/best-practices/code-style-standards.md +122 -0
- package/wiki/get-started/best-practices/common-pitfalls.md +136 -0
- package/wiki/get-started/best-practices/contribution-workflow.md +145 -0
- package/wiki/get-started/best-practices/deployment-strategies.md +121 -0
- package/wiki/get-started/best-practices/performance-optimization.md +88 -0
- package/wiki/get-started/best-practices/security-guidelines.md +97 -0
- package/wiki/get-started/best-practices/troubleshooting-tips.md +100 -0
- package/wiki/get-started/building-a-crud-api.md +717 -0
- package/wiki/get-started/core-concepts/application.md +168 -0
- package/wiki/get-started/core-concepts/components.md +96 -0
- package/wiki/get-started/core-concepts/controllers.md +441 -0
- package/wiki/get-started/core-concepts/dependency-injection.md +160 -0
- package/wiki/get-started/core-concepts/persistent.md +591 -0
- package/wiki/get-started/core-concepts/services.md +88 -0
- package/wiki/get-started/index.md +65 -0
- package/wiki/get-started/mcp-docs-server.md +840 -0
- package/wiki/get-started/philosophy.md +123 -0
- package/wiki/get-started/prerequisites.md +113 -0
- package/wiki/get-started/quickstart.md +382 -0
- package/wiki/index.md +48 -0
- package/wiki/references/base/application.md +67 -0
- package/wiki/references/base/components.md +80 -0
- package/wiki/references/base/controllers.md +361 -0
- package/wiki/references/base/datasources.md +105 -0
- package/wiki/references/base/dependency-injection.md +83 -0
- package/wiki/references/base/models.md +104 -0
- package/wiki/references/base/repositories.md +118 -0
- package/wiki/references/base/services.md +97 -0
- package/wiki/references/components/authentication.md +224 -0
- package/wiki/references/components/health-check.md +190 -0
- package/wiki/references/components/index.md +61 -0
- package/wiki/references/components/request-tracker.md +35 -0
- package/wiki/references/components/socket-io.md +127 -0
- package/wiki/references/components/swagger.md +175 -0
- package/wiki/references/helpers/cron.md +94 -0
- package/wiki/references/helpers/crypto.md +117 -0
- package/wiki/references/helpers/env.md +67 -0
- package/wiki/references/helpers/error.md +80 -0
- package/wiki/references/helpers/index.md +21 -0
- package/wiki/references/helpers/inversion.md +141 -0
- package/wiki/references/helpers/logger.md +98 -0
- package/wiki/references/helpers/network.md +143 -0
- package/wiki/references/helpers/queue.md +131 -0
- package/wiki/references/helpers/redis.md +121 -0
- package/wiki/references/helpers/socket-io.md +103 -0
- package/wiki/references/helpers/storage.md +130 -0
- package/wiki/references/helpers/testing.md +115 -0
- package/wiki/references/helpers/worker-thread.md +162 -0
- package/wiki/references/src-details/core.md +249 -0
- package/wiki/references/src-details/dev-configs.md +302 -0
- package/wiki/references/src-details/docs.md +61 -0
- package/wiki/references/src-details/helpers.md +211 -0
- package/wiki/references/src-details/inversion.md +345 -0
- package/wiki/references/src-details/mcp-server.md +726 -0
- package/wiki/references/utilities/crypto.md +39 -0
- package/wiki/references/utilities/date.md +72 -0
- package/wiki/references/utilities/index.md +12 -0
- package/wiki/references/utilities/module.md +40 -0
- package/wiki/references/utilities/parse.md +68 -0
- package/wiki/references/utilities/performance.md +64 -0
- package/wiki/references/utilities/promise.md +83 -0
- package/wiki/references/utilities/request.md +66 -0
- package/wiki/references/utilities/schema.md +88 -0
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
# Package: `@venizia/dev-configs`
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
The `@venizia/dev-configs` package provides centralized, shared development configurations for all packages in the Venizia/Ignis monorepo. This ensures consistent code style, linting rules, and TypeScript configurations across the entire project.
|
|
6
|
+
|
|
7
|
+
## Package Information
|
|
8
|
+
|
|
9
|
+
| Property | Value |
|
|
10
|
+
|----------|-------|
|
|
11
|
+
| **Package Name** | `@venizia/dev-configs` |
|
|
12
|
+
| **Location** | `packages/dev-configs/` |
|
|
13
|
+
| **Purpose** | Centralized development configurations |
|
|
14
|
+
| **Dependencies** | `@minimaltech/eslint-node` |
|
|
15
|
+
|
|
16
|
+
## Exports
|
|
17
|
+
|
|
18
|
+
| Export Path | Type | Description |
|
|
19
|
+
|-------------|------|-------------|
|
|
20
|
+
| `@venizia/dev-configs` | Module | Named exports: `eslintConfigs`, `prettierConfigs` |
|
|
21
|
+
| `@venizia/dev-configs/tsconfig.base.json` | JSON | Base TypeScript configuration |
|
|
22
|
+
| `@venizia/dev-configs/tsconfig.common.json` | JSON | Common TypeScript config for packages |
|
|
23
|
+
|
|
24
|
+
### Named Exports
|
|
25
|
+
|
|
26
|
+
```typescript
|
|
27
|
+
import { eslintConfigs, prettierConfigs } from '@venizia/dev-configs';
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
- **`eslintConfigs`**: `Linter.Config[]` - ESLint flat config array
|
|
31
|
+
- **`prettierConfigs`**: `Config` - Prettier configuration object
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## ESLint Configuration
|
|
36
|
+
|
|
37
|
+
### Usage
|
|
38
|
+
|
|
39
|
+
Create an `eslint.config.mjs` file in your package:
|
|
40
|
+
|
|
41
|
+
```javascript
|
|
42
|
+
import { eslintConfigs } from '@venizia/dev-configs';
|
|
43
|
+
|
|
44
|
+
export default eslintConfigs;
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Extending the Config
|
|
48
|
+
|
|
49
|
+
To add package-specific rules:
|
|
50
|
+
|
|
51
|
+
```javascript
|
|
52
|
+
import { eslintConfigs } from '@venizia/dev-configs';
|
|
53
|
+
|
|
54
|
+
const configs = [
|
|
55
|
+
...eslintConfigs,
|
|
56
|
+
{
|
|
57
|
+
// Add custom ignores
|
|
58
|
+
ignores: ['custom-folder/**'],
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
// Add custom rules
|
|
62
|
+
rules: {
|
|
63
|
+
'no-console': 'warn',
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
];
|
|
67
|
+
|
|
68
|
+
export default configs;
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Included Rules
|
|
72
|
+
|
|
73
|
+
| Rule | Setting | Description |
|
|
74
|
+
|------|---------|-------------|
|
|
75
|
+
| `@typescript-eslint/no-explicit-any` | `off` | Allows `any` type usage |
|
|
76
|
+
| *Base rules* | *inherited* | All rules from `@minimaltech/eslint-node` |
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Prettier Configuration
|
|
81
|
+
|
|
82
|
+
### Usage
|
|
83
|
+
|
|
84
|
+
Create a `.prettierrc.mjs` file in your package:
|
|
85
|
+
|
|
86
|
+
```javascript
|
|
87
|
+
import { prettierConfigs } from '@venizia/dev-configs';
|
|
88
|
+
|
|
89
|
+
export default prettierConfigs;
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Configuration Options
|
|
93
|
+
|
|
94
|
+
| Option | Value | Description |
|
|
95
|
+
|--------|-------|-------------|
|
|
96
|
+
| `bracketSpacing` | `true` | Spaces inside object braces: `{ foo: bar }` |
|
|
97
|
+
| `singleQuote` | `false` | Use double quotes (changed from single) |
|
|
98
|
+
| `printWidth` | `100` | Maximum line width |
|
|
99
|
+
| `tabWidth` | `2` | Spaces per indentation level |
|
|
100
|
+
| `trailingComma` | `'all'` | Trailing commas everywhere possible |
|
|
101
|
+
| `arrowParens` | `'avoid'` | Omit parens for single arrow function params |
|
|
102
|
+
| `semi` | `true` | Add semicolons at statement ends |
|
|
103
|
+
|
|
104
|
+
### Prettier Ignore
|
|
105
|
+
|
|
106
|
+
Create a `.prettierignore` file in your package:
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
dist
|
|
110
|
+
node_modules
|
|
111
|
+
*.log
|
|
112
|
+
.*-audit.json
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Recommended ignore patterns:
|
|
116
|
+
- `dist` - Build output
|
|
117
|
+
- `node_modules` - Dependencies
|
|
118
|
+
- `*.log` - Log files
|
|
119
|
+
- `.*-audit.json` - Audit files
|
|
120
|
+
- `coverage` - Test coverage (if applicable)
|
|
121
|
+
- `*.min.js` - Minified files (if applicable)
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## TypeScript Configuration
|
|
126
|
+
|
|
127
|
+
### Base Configuration (`tsconfig.base.json`)
|
|
128
|
+
|
|
129
|
+
The base configuration includes all compiler options suitable for Node.js/Bun TypeScript projects.
|
|
130
|
+
|
|
131
|
+
#### Usage
|
|
132
|
+
|
|
133
|
+
```json
|
|
134
|
+
{
|
|
135
|
+
"$schema": "http://json.schemastore.org/tsconfig",
|
|
136
|
+
"extends": "@venizia/dev-configs/tsconfig.base.json",
|
|
137
|
+
"compilerOptions": {
|
|
138
|
+
"outDir": "dist",
|
|
139
|
+
"rootDir": "src"
|
|
140
|
+
},
|
|
141
|
+
"include": ["src"],
|
|
142
|
+
"exclude": ["node_modules", "dist"]
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
#### Compiler Options Summary
|
|
147
|
+
|
|
148
|
+
| Category | Options |
|
|
149
|
+
|----------|---------|
|
|
150
|
+
| **Target** | ES2022, lib: ES2022 |
|
|
151
|
+
| **Modules** | Node16, resolveJsonModule, esModuleInterop |
|
|
152
|
+
| **Decorators** | experimentalDecorators, emitDecoratorMetadata |
|
|
153
|
+
| **Emit** | declaration, declarationMap, sourceMap |
|
|
154
|
+
| **Strict** | strict (with selective relaxations) |
|
|
155
|
+
| **Performance** | incremental, skipLibCheck |
|
|
156
|
+
|
|
157
|
+
#### Strict Mode Configuration
|
|
158
|
+
|
|
159
|
+
| Option | Value | Rationale |
|
|
160
|
+
|--------|-------|-----------|
|
|
161
|
+
| `strict` | `true` | Enable all strict checks |
|
|
162
|
+
| `noImplicitAny` | `false` | Allow implicit any for flexibility |
|
|
163
|
+
| `strictNullChecks` | `true` | Enforce null safety |
|
|
164
|
+
| `strictPropertyInitialization` | `false` | Allow uninitialized properties (for DI) |
|
|
165
|
+
| `useUnknownInCatchVariables` | `false` | Use `any` in catch blocks |
|
|
166
|
+
|
|
167
|
+
### Common Configuration (`tsconfig.common.json`)
|
|
168
|
+
|
|
169
|
+
Extends the base config with settings for standard packages:
|
|
170
|
+
|
|
171
|
+
```json
|
|
172
|
+
{
|
|
173
|
+
"$schema": "http://json.schemastore.org/tsconfig",
|
|
174
|
+
"extends": "@venizia/dev-configs/tsconfig.common.json",
|
|
175
|
+
"compilerOptions": {
|
|
176
|
+
"outDir": "dist",
|
|
177
|
+
"rootDir": "src",
|
|
178
|
+
"baseUrl": "src",
|
|
179
|
+
"paths": {
|
|
180
|
+
"@/*": ["./*"]
|
|
181
|
+
}
|
|
182
|
+
},
|
|
183
|
+
"include": ["src"],
|
|
184
|
+
"exclude": ["node_modules", "dist"]
|
|
185
|
+
}
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
**Note:** Path-related options (`outDir`, `rootDir`, `baseUrl`, `paths`, `include`, `exclude`) must be defined in each package's tsconfig.json as they are resolved relative to the config file location.
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## Project Structure
|
|
193
|
+
|
|
194
|
+
```
|
|
195
|
+
packages/dev-configs/
|
|
196
|
+
├── package.json
|
|
197
|
+
├── tsconfig.json
|
|
198
|
+
├── src/
|
|
199
|
+
│ ├── index.ts # Re-exports all configs
|
|
200
|
+
│ ├── eslint.ts # ESLint configuration
|
|
201
|
+
│ └── prettier.ts # Prettier configuration
|
|
202
|
+
├── tsconfig/
|
|
203
|
+
│ ├── tsconfig.base.json # Base TypeScript config
|
|
204
|
+
│ └── tsconfig.common.json # Common package config
|
|
205
|
+
├── prettier/
|
|
206
|
+
│ └── .prettierignore # Prettier ignore patterns
|
|
207
|
+
├── scripts/
|
|
208
|
+
│ ├── build.sh
|
|
209
|
+
│ ├── clean.sh
|
|
210
|
+
│ └── rebuild.sh
|
|
211
|
+
└── dist/ # Built output
|
|
212
|
+
├── index.js / .d.ts
|
|
213
|
+
├── eslint.js / .d.ts
|
|
214
|
+
└── prettier.js / .d.ts
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
## Integration Guide
|
|
220
|
+
|
|
221
|
+
### Adding to a New Package
|
|
222
|
+
|
|
223
|
+
1. Add the dependency to your `package.json`:
|
|
224
|
+
|
|
225
|
+
```json
|
|
226
|
+
{
|
|
227
|
+
"devDependencies": {
|
|
228
|
+
"@venizia/dev-configs": "latest",
|
|
229
|
+
"eslint": "^9.36.0",
|
|
230
|
+
"prettier": "^3.6.2",
|
|
231
|
+
"typescript": "^5.9.3"
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
2. Create configuration files:
|
|
237
|
+
|
|
238
|
+
**`tsconfig.json`:**
|
|
239
|
+
```json
|
|
240
|
+
{
|
|
241
|
+
"$schema": "http://json.schemastore.org/tsconfig",
|
|
242
|
+
"extends": "@venizia/dev-configs/tsconfig.common.json",
|
|
243
|
+
"compilerOptions": {
|
|
244
|
+
"outDir": "dist",
|
|
245
|
+
"rootDir": "src",
|
|
246
|
+
"baseUrl": "src",
|
|
247
|
+
"paths": { "@/*": ["./*"] }
|
|
248
|
+
},
|
|
249
|
+
"include": ["src"],
|
|
250
|
+
"exclude": ["node_modules", "dist"]
|
|
251
|
+
}
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
**`eslint.config.mjs`:**
|
|
255
|
+
```javascript
|
|
256
|
+
import { eslintConfigs } from '@venizia/dev-configs';
|
|
257
|
+
|
|
258
|
+
export default eslintConfigs;
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
**`.prettierrc.mjs`:**
|
|
262
|
+
```javascript
|
|
263
|
+
import { prettierConfigs } from '@venizia/dev-configs';
|
|
264
|
+
|
|
265
|
+
export default prettierConfigs;
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
**`.prettierignore`:**
|
|
269
|
+
```
|
|
270
|
+
dist
|
|
271
|
+
node_modules
|
|
272
|
+
*.log
|
|
273
|
+
.*-audit.json
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
3. Add lint scripts to `package.json`:
|
|
277
|
+
|
|
278
|
+
```json
|
|
279
|
+
{
|
|
280
|
+
"scripts": {
|
|
281
|
+
"lint": "eslint --report-unused-disable-directives . && prettier \"**/*.{js,ts}\" -l",
|
|
282
|
+
"lint:fix": "eslint --report-unused-disable-directives . --fix && prettier \"**/*.{js,ts}\" --write"
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
## Building the Package
|
|
290
|
+
|
|
291
|
+
```bash
|
|
292
|
+
cd packages/dev-configs
|
|
293
|
+
|
|
294
|
+
# Build
|
|
295
|
+
bun run build
|
|
296
|
+
|
|
297
|
+
# Clean
|
|
298
|
+
bun run clean
|
|
299
|
+
|
|
300
|
+
# Rebuild (clean + build)
|
|
301
|
+
bun run rebuild
|
|
302
|
+
```
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Package: `@venizia/ignis-docs`
|
|
2
|
+
|
|
3
|
+
Documentation package housing guides, references, and MCP server for the Ignis framework.
|
|
4
|
+
|
|
5
|
+
## Quick Reference
|
|
6
|
+
|
|
7
|
+
**Package:** Documentation built with VitePress + MCP server for external tool integration.
|
|
8
|
+
|
|
9
|
+
### Main Components
|
|
10
|
+
|
|
11
|
+
| Component | Technology | Purpose |
|
|
12
|
+
|-----------|------------|---------|
|
|
13
|
+
| **Wiki** | VitePress | Main documentation site (guides + references) |
|
|
14
|
+
| **MCP Server** | Model Context Protocol | External tool documentation discovery |
|
|
15
|
+
|
|
16
|
+
### Wiki Structure
|
|
17
|
+
|
|
18
|
+
| Section | Content |
|
|
19
|
+
|---------|---------|
|
|
20
|
+
| `get-started/` | Tutorials, quickstart, core concepts, best practices |
|
|
21
|
+
| `references/` | API reference, components, helpers, base classes |
|
|
22
|
+
| `.vitepress/` | Site configuration and theme |
|
|
23
|
+
|
|
24
|
+
## Project Structure Overview
|
|
25
|
+
|
|
26
|
+
Top-level breakdown of the `@packages/docs/` directory:
|
|
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. |
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Detailed Sections
|
|
36
|
+
|
|
37
|
+
### `mcp`
|
|
38
|
+
|
|
39
|
+
This directory contains the implementation of a Model Context Protocol (MCP) server, which allows external tools to discover and read documentation resources.
|
|
40
|
+
|
|
41
|
+
| File/Folder | Purpose/Key Details |
|
|
42
|
+
| :---------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
### `wiki`
|
|
46
|
+
|
|
47
|
+
This directory holds the actual documentation content and the VitePress configuration for building the documentation website.
|
|
48
|
+
|
|
49
|
+
| File/Folder | Purpose/Key Details |
|
|
50
|
+
| :---------------------- | :----------------------------------------------------------------------------------------------------------------------------- |
|
|
51
|
+
| `.vitepress/` | VitePress-specific configuration and theme files. |
|
|
52
|
+
| `.vitepress/config.mts` | The main configuration file for VitePress, defining the documentation's title, description, navigation, and sidebar structure. |
|
|
53
|
+
| `.vitepress/theme/` | Custom theme files for the VitePress documentation. |
|
|
54
|
+
| `get-started/` | Guides and tutorials for getting started with `Ignis`. |
|
|
55
|
+
| `references/` | Detailed reference documentation for various aspects of the framework. |
|
|
56
|
+
| `index.md` | The homepage content for the documentation site. |
|
|
57
|
+
| `logo.svg` | The logo used in the documentation. |
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
This detailed breakdown illustrates the modular and layered design of the `Ignis` framework, emphasizing its extensibility and adherence to robust architectural patterns.
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
# Package: `@venizia/ignis-helpers`
|
|
2
|
+
|
|
3
|
+
## Helpers Package Directory: Detailed Breakdown
|
|
4
|
+
|
|
5
|
+
The `@venizia/ignis-helpers` package consolidates a wide array of reusable helper classes and utility functions designed to support various cross-cutting concerns within the Ignis framework. This package promotes modularity by extracting common functionalities into a standalone, easily consumable library.
|
|
6
|
+
|
|
7
|
+
## Project Structure Overview
|
|
8
|
+
|
|
9
|
+
Here's the top-level breakdown of the `src` directory within `@packages/helpers/`:
|
|
10
|
+
|
|
11
|
+
| Folder | Purpose |
|
|
12
|
+
| :-------------- | :----------------------------------------------------------------------------------------------------------- |
|
|
13
|
+
| **`__tests__`** | Contains unit and integration tests for the helper utilities. |
|
|
14
|
+
| **`base`** | Provides foundational helper classes, such as `BaseHelper`. |
|
|
15
|
+
| **`common`** | Stores shared constants and types used across the helpers. |
|
|
16
|
+
| **`helpers`** | A collection of specialized helper modules for various functionalities (e.g., cron, crypto, network, queue). |
|
|
17
|
+
| **`utilities`** | Contains pure, standalone utility functions for common tasks (e.g., parsing, date manipulation). |
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Detailed Sections
|
|
22
|
+
|
|
23
|
+
### `__tests__`
|
|
24
|
+
|
|
25
|
+
This directory is dedicated to the test suite for the `@venizia/ignis-helpers` package.
|
|
26
|
+
|
|
27
|
+
| File/Folder | Purpose/Key Details |
|
|
28
|
+
| :---------------------- | :------------------------------------------------------------------------- |
|
|
29
|
+
| `index.ts` | Entry point for running tests within the helpers package. |
|
|
30
|
+
| `jwt/` | Contains test cases specifically for JWT-related helper functions, if any. |
|
|
31
|
+
| `jwt/test-cases/jwt.ts` | Example: defines `TestCase001` to check JWT creation in a helper context. |
|
|
32
|
+
|
|
33
|
+
### `base`
|
|
34
|
+
|
|
35
|
+
This foundational layer provides base classes that other helpers extend.
|
|
36
|
+
|
|
37
|
+
#### `base/helpers`
|
|
38
|
+
|
|
39
|
+
| File/Folder | Purpose/Key Details |
|
|
40
|
+
| :---------- | :--------------------------------------------------------------------------------------------------------------------------------------- |
|
|
41
|
+
| `base.ts` | Defines `BaseHelper`, a generic base class providing common utilities like a logger instance and scope management for all other helpers. |
|
|
42
|
+
|
|
43
|
+
### `common`
|
|
44
|
+
|
|
45
|
+
This directory holds various shared definitions and constants used throughout the helpers package.
|
|
46
|
+
|
|
47
|
+
| File/Folder | Purpose/Key Details |
|
|
48
|
+
| :----------- | :------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
49
|
+
| `constants/` | Contains application-wide constants such as `HTTP` methods and status codes, `MimeTypes`, `RuntimeModules` (Bun, Node.js), and `DataTypes`. |
|
|
50
|
+
| `types.ts` | Contains general TypeScript utility types like `ValueOrPromise`, `AnyObject`, `IClass`, `TMixinTarget`, and `IProvider`. |
|
|
51
|
+
|
|
52
|
+
### `helpers`
|
|
53
|
+
|
|
54
|
+
This directory groups specialized helper modules by their functionality.
|
|
55
|
+
|
|
56
|
+
#### `helpers/cron/`
|
|
57
|
+
|
|
58
|
+
| File/Folder | Purpose/Key Details |
|
|
59
|
+
| :--------------- | :--------------------------------------------------------------------------- |
|
|
60
|
+
| `cron.helper.ts` | `CronHelper` for scheduling and managing cron jobs using the `cron` library. |
|
|
61
|
+
|
|
62
|
+
#### `helpers/crypto/`
|
|
63
|
+
|
|
64
|
+
Cryptographic utilities.
|
|
65
|
+
|
|
66
|
+
| File/Folder | Purpose/Key Details |
|
|
67
|
+
| :------------ | :------------------------------------------------ |
|
|
68
|
+
| `algorithms/` | AES and RSA encryption/decryption algorithms. |
|
|
69
|
+
| `common/` | Common types and constants for crypto operations. |
|
|
70
|
+
|
|
71
|
+
#### `helpers/env/`
|
|
72
|
+
|
|
73
|
+
| File/Folder | Purpose/Key Details |
|
|
74
|
+
| :----------- | :----------------------------------------------------------------------- |
|
|
75
|
+
| `app-env.ts` | `ApplicationEnvironment` for structured access to environment variables. |
|
|
76
|
+
|
|
77
|
+
#### `helpers/error/`
|
|
78
|
+
|
|
79
|
+
| File/Folder | Purpose/Key Details |
|
|
80
|
+
| :------------- | :-------------------------------------------------------- |
|
|
81
|
+
| `app-error.ts` | `ApplicationError` class for standardized error handling. |
|
|
82
|
+
|
|
83
|
+
#### `helpers/inversion/`
|
|
84
|
+
|
|
85
|
+
Application-enhanced Dependency Injection (DI) module that extends `@venizia/ignis-inversion`.
|
|
86
|
+
|
|
87
|
+
> **Note:** The core DI functionality (Container, Binding, MetadataRegistry base classes) has been extracted to the standalone `@venizia/ignis-inversion` package. This module extends and re-exports that functionality with application-specific enhancements.
|
|
88
|
+
|
|
89
|
+
| File/Folder | Purpose/Key Details |
|
|
90
|
+
| :------------- | :------------------------------------------------------------------------------------------------------------ |
|
|
91
|
+
| `container.ts` | Extended `Container` class with `ApplicationLogger` integration. |
|
|
92
|
+
| `registry.ts` | Extended `MetadataRegistry` with framework-specific metadata (controllers, models, repositories, datasources).|
|
|
93
|
+
| `common/keys.ts`| Framework-specific `MetadataKeys` (CONTROLLER, MODEL, REPOSITORY, etc.) merged with base keys. |
|
|
94
|
+
| `common/types.ts`| Framework-specific interfaces (`IControllerMetadata`, `IModelMetadata`, `IRepositoryMetadata`, etc.). |
|
|
95
|
+
| `index.ts` | Re-exports core classes from `@venizia/ignis-inversion` plus application extensions. |
|
|
96
|
+
|
|
97
|
+
**Re-exported from `@venizia/ignis-inversion`:**
|
|
98
|
+
- `Binding`, `BindingKeys`, `BindingScopes`, `BindingValueTypes`
|
|
99
|
+
|
|
100
|
+
**Application-specific additions:**
|
|
101
|
+
- `Container` with `ApplicationLogger` integration
|
|
102
|
+
- `MetadataRegistry` with `setControllerMetadata`, `setModelMetadata`, `setRepositoryMetadata`, etc.
|
|
103
|
+
- Framework metadata interfaces for controllers, models, repositories, and data sources
|
|
104
|
+
|
|
105
|
+
For standalone DI usage without framework features, import directly from `@venizia/ignis-inversion`.
|
|
106
|
+
|
|
107
|
+
#### `helpers/logger/`
|
|
108
|
+
|
|
109
|
+
Logging solution built on Winston.
|
|
110
|
+
|
|
111
|
+
| File/Folder | Purpose/Key Details |
|
|
112
|
+
| :------------------------------ | :--------------------------------------------------------------------- |
|
|
113
|
+
| `application-logger.ts` | `ApplicationLogger` for structured logging with scopes. |
|
|
114
|
+
| `default-logger.ts` | Default Winston logger configuration with console and file transports. |
|
|
115
|
+
| `factory.ts` | `LoggerFactory` for obtaining logger instances. |
|
|
116
|
+
| `transports/dgram.transport.ts` | UDP transport for log aggregation. |
|
|
117
|
+
| `types.ts` | Log level definitions. |
|
|
118
|
+
|
|
119
|
+
#### `helpers/network/`
|
|
120
|
+
|
|
121
|
+
Utilities for network communication.
|
|
122
|
+
|
|
123
|
+
| File/Folder | Purpose/Key Details |
|
|
124
|
+
| :-------------- | :------------------------------------------------------------------------------ |
|
|
125
|
+
| `http-request/` | HTTP client implementations (`AxiosNetworkRequest`, `NodeFetchNetworkRequest`). |
|
|
126
|
+
| `tcp-socket/` | TCP and TLS socket client/server helpers. |
|
|
127
|
+
| `udp-socket/` | UDP client helper. |
|
|
128
|
+
|
|
129
|
+
#### `helpers/queue/`
|
|
130
|
+
|
|
131
|
+
Message queuing solutions.
|
|
132
|
+
|
|
133
|
+
| File/Folder | Purpose/Key Details |
|
|
134
|
+
| :---------- | :---------------------------------------------- |
|
|
135
|
+
| `bullmq/` | `BullMQHelper` for Redis-backed message queues. |
|
|
136
|
+
| `mqtt/` | `MQTTClientHelper` for MQTT broker interaction. |
|
|
137
|
+
| `internal/` | `QueueHelper` for simple in-memory queues. |
|
|
138
|
+
| `common/` | Common types for queue operations. |
|
|
139
|
+
|
|
140
|
+
#### `helpers/redis/`
|
|
141
|
+
|
|
142
|
+
Redis client helpers.
|
|
143
|
+
|
|
144
|
+
| File/Folder | Purpose/Key Details |
|
|
145
|
+
| :------------------ | :----------------------------------------------------------------- |
|
|
146
|
+
| `cluster.helper.ts` | `RedisClusterHelper` for Redis cluster connections. |
|
|
147
|
+
| `default.helper.ts` | `DefaultRedisHelper` providing a unified API for Redis operations. |
|
|
148
|
+
| `single.helper.ts` | `RedisHelper` for single Redis instance connections. |
|
|
149
|
+
| `types.ts` | Interfaces and types for Redis helpers. |
|
|
150
|
+
|
|
151
|
+
#### `helpers/socket-io/`
|
|
152
|
+
|
|
153
|
+
Socket.IO client and server helpers.
|
|
154
|
+
|
|
155
|
+
| File/Folder | Purpose/Key Details |
|
|
156
|
+
| :---------- | :------------------------------------------------------------ |
|
|
157
|
+
| `client/` | `SocketIOClientHelper` for client-side Socket.IO connections. |
|
|
158
|
+
| `server/` | `SocketIOServerHelper` for server-side Socket.IO management. |
|
|
159
|
+
| `common/` | Common types and constants for Socket.IO. |
|
|
160
|
+
|
|
161
|
+
#### `helpers/storage/`
|
|
162
|
+
|
|
163
|
+
Storage utilities.
|
|
164
|
+
|
|
165
|
+
| File/Folder | Purpose/Key Details |
|
|
166
|
+
| :----------- | :----------------------------------------------------- |
|
|
167
|
+
| `in-memory/` | `MemoryStorageHelper` for in-memory key-value storage. |
|
|
168
|
+
| `minio/` | `MinioHelper` for S3-compatible object storage. |
|
|
169
|
+
|
|
170
|
+
#### `helpers/testing/`
|
|
171
|
+
|
|
172
|
+
Framework for writing and executing tests using `node:test`.
|
|
173
|
+
|
|
174
|
+
| File/Folder | Purpose/Key Details |
|
|
175
|
+
| :------------------ | :---------------------------------------------------------- |
|
|
176
|
+
| `base-test-plan.ts` | Abstract base for test plans. |
|
|
177
|
+
| `common/` | Common types and constants for testing utilities. |
|
|
178
|
+
| `describe.ts` | `TestDescribe` integrates with `node:test` lifecycle hooks. |
|
|
179
|
+
| `test-case.ts` | Defines individual test cases. |
|
|
180
|
+
| `test-handler.ts` | Base class for test case handlers. |
|
|
181
|
+
| `test-plan.ts` | `TestPlan` for organizing test suites. |
|
|
182
|
+
|
|
183
|
+
#### `helpers/worker-thread/`
|
|
184
|
+
|
|
185
|
+
Utilities for Node.js worker threads.
|
|
186
|
+
|
|
187
|
+
| File/Folder | Purpose/Key Details |
|
|
188
|
+
| :--------------- | :---------------------------------------------------------- |
|
|
189
|
+
| `base.ts` | Base classes for workers and worker threads. |
|
|
190
|
+
| `types.ts` | Interfaces and types for worker threads. |
|
|
191
|
+
| `worker-bus.ts` | Helpers for inter-thread communication using `MessagePort`. |
|
|
192
|
+
| `worker-pool.ts` | `WorkerPoolHelper` for managing a pool of worker threads. |
|
|
193
|
+
|
|
194
|
+
### `utilities`
|
|
195
|
+
|
|
196
|
+
This directory contains pure, standalone utility functions that perform common, stateless operations.
|
|
197
|
+
|
|
198
|
+
| File/Folder | Purpose/Key Details |
|
|
199
|
+
| :----------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
200
|
+
| `crypto.utility.ts` | Provides a `hash()` function for cryptographic hashing (SHA256, MD5). |
|
|
201
|
+
| `date.utility.ts` | Date and time manipulation functions (`dayjs` integration, `sleep`, `isWeekday`, `getDateTz`, `hrTime`). |
|
|
202
|
+
| `module.utility.ts` | `validateModule()` to check for module existence at runtime. |
|
|
203
|
+
| `parse.utility.ts` | Functions for type checking (`isInt`, `isFloat`), type conversion (`int`, `float`, `toBoolean`), string/object transformation (`toCamel`, `keysToCamel`), array transformations (`parseArrayToRecordWithKey`, `parseArrayToMapWithKey`), and `getUID()` for unique IDs. |
|
|
204
|
+
| `performance.utility.ts` | Utilities for measuring code execution time (`executeWithPerformanceMeasure`, `getPerformanceCheckpoint`, `getExecutedPerformance`). |
|
|
205
|
+
| `promise.utility.ts` | Helper functions for Promises (`executePromiseWithLimit`, `isPromiseLike`, `transformValueOrPromise`, `getDeepProperty`). |
|
|
206
|
+
| `request.utility.ts` | Utilities for handling HTTP request data, such as `parseMultipartBody` for multipart form data. |
|
|
207
|
+
| `schema.utility.ts` | Helper functions and predefined schemas for `zod` and `@hono/zod-openapi` (`jsonContent`, `jsonResponse`, `requiredString`, `AnyObjectSchema`, `IdParamsSchema`, `UUIDParamsSchema`). |
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
This detailed breakdown illustrates the modular and layered design of the Ignis framework, emphasizing its extensibility and adherence to robust architectural patterns.
|