@venizia/ignis-docs 0.0.2 → 0.0.4-0

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 (134) hide show
  1. package/README.md +1 -1
  2. package/package.json +4 -2
  3. package/wiki/best-practices/api-usage-examples.md +591 -0
  4. package/wiki/best-practices/architectural-patterns.md +415 -0
  5. package/wiki/best-practices/architecture-decisions.md +488 -0
  6. package/wiki/{get-started/best-practices → best-practices}/code-style-standards.md +647 -182
  7. package/wiki/{get-started/best-practices → best-practices}/common-pitfalls.md +109 -4
  8. package/wiki/{get-started/best-practices → best-practices}/contribution-workflow.md +34 -7
  9. package/wiki/best-practices/data-modeling.md +376 -0
  10. package/wiki/best-practices/deployment-strategies.md +698 -0
  11. package/wiki/best-practices/index.md +27 -0
  12. package/wiki/best-practices/performance-optimization.md +196 -0
  13. package/wiki/best-practices/security-guidelines.md +218 -0
  14. package/wiki/{get-started/best-practices → best-practices}/troubleshooting-tips.md +97 -1
  15. package/wiki/changelogs/2025-12-16-initial-architecture.md +1 -1
  16. package/wiki/changelogs/2025-12-16-model-repo-datasource-refactor.md +1 -1
  17. package/wiki/changelogs/2025-12-17-refactor.md +1 -1
  18. package/wiki/changelogs/2025-12-18-performance-optimizations.md +5 -5
  19. package/wiki/changelogs/2025-12-18-repository-validation-security.md +13 -7
  20. package/wiki/changelogs/2025-12-26-nested-relations-and-generics.md +86 -0
  21. package/wiki/changelogs/2025-12-26-transaction-support.md +57 -0
  22. package/wiki/changelogs/2025-12-29-dynamic-binding-registration.md +104 -0
  23. package/wiki/changelogs/2025-12-29-snowflake-uid-helper.md +100 -0
  24. package/wiki/changelogs/2025-12-30-repository-enhancements.md +214 -0
  25. package/wiki/changelogs/2025-12-31-json-path-filtering-array-operators.md +214 -0
  26. package/wiki/changelogs/2025-12-31-string-id-custom-generator.md +137 -0
  27. package/wiki/changelogs/2026-01-02-default-filter-and-repository-mixins.md +418 -0
  28. package/wiki/changelogs/index.md +8 -1
  29. package/wiki/changelogs/planned-schema-migrator.md +2 -10
  30. package/wiki/{get-started/core-concepts → guides/core-concepts/application}/bootstrapping.md +18 -5
  31. package/wiki/{get-started/core-concepts/application.md → guides/core-concepts/application/index.md} +47 -104
  32. package/wiki/guides/core-concepts/components-guide.md +509 -0
  33. package/wiki/guides/core-concepts/components.md +122 -0
  34. package/wiki/{get-started → guides}/core-concepts/controllers.md +30 -13
  35. package/wiki/{get-started → guides}/core-concepts/dependency-injection.md +97 -0
  36. package/wiki/guides/core-concepts/persistent/datasources.md +179 -0
  37. package/wiki/guides/core-concepts/persistent/index.md +119 -0
  38. package/wiki/guides/core-concepts/persistent/models.md +241 -0
  39. package/wiki/guides/core-concepts/persistent/repositories.md +219 -0
  40. package/wiki/guides/core-concepts/persistent/transactions.md +170 -0
  41. package/wiki/{get-started → guides}/core-concepts/services.md +26 -3
  42. package/wiki/{get-started → guides/get-started}/5-minute-quickstart.md +59 -14
  43. package/wiki/guides/get-started/philosophy.md +682 -0
  44. package/wiki/guides/get-started/setup.md +157 -0
  45. package/wiki/guides/index.md +89 -0
  46. package/wiki/guides/reference/glossary.md +243 -0
  47. package/wiki/{get-started → guides/reference}/mcp-docs-server.md +0 -10
  48. package/wiki/{get-started → guides/tutorials}/building-a-crud-api.md +134 -132
  49. package/wiki/{get-started/quickstart.md → guides/tutorials/complete-installation.md} +107 -71
  50. package/wiki/guides/tutorials/ecommerce-api.md +1399 -0
  51. package/wiki/guides/tutorials/realtime-chat.md +1261 -0
  52. package/wiki/guides/tutorials/testing.md +723 -0
  53. package/wiki/index.md +176 -37
  54. package/wiki/references/base/application.md +27 -0
  55. package/wiki/references/base/bootstrapping.md +30 -26
  56. package/wiki/references/base/components.md +532 -31
  57. package/wiki/references/base/controllers.md +136 -38
  58. package/wiki/references/base/datasources.md +108 -5
  59. package/wiki/references/base/dependency-injection.md +39 -3
  60. package/wiki/references/base/filter-system/application-usage.md +224 -0
  61. package/wiki/references/base/filter-system/array-operators.md +132 -0
  62. package/wiki/references/base/filter-system/comparison-operators.md +109 -0
  63. package/wiki/references/base/filter-system/default-filter.md +428 -0
  64. package/wiki/references/base/filter-system/fields-order-pagination.md +155 -0
  65. package/wiki/references/base/filter-system/index.md +127 -0
  66. package/wiki/references/base/filter-system/json-filtering.md +197 -0
  67. package/wiki/references/base/filter-system/list-operators.md +71 -0
  68. package/wiki/references/base/filter-system/logical-operators.md +156 -0
  69. package/wiki/references/base/filter-system/null-operators.md +58 -0
  70. package/wiki/references/base/filter-system/pattern-matching.md +108 -0
  71. package/wiki/references/base/filter-system/quick-reference.md +431 -0
  72. package/wiki/references/base/filter-system/range-operators.md +63 -0
  73. package/wiki/references/base/filter-system/tips.md +190 -0
  74. package/wiki/references/base/filter-system/use-cases.md +452 -0
  75. package/wiki/references/base/index.md +90 -0
  76. package/wiki/references/base/middlewares.md +602 -0
  77. package/wiki/references/base/models.md +215 -23
  78. package/wiki/references/base/providers.md +732 -0
  79. package/wiki/references/base/repositories/advanced.md +555 -0
  80. package/wiki/references/base/repositories/index.md +228 -0
  81. package/wiki/references/base/repositories/mixins.md +331 -0
  82. package/wiki/references/base/repositories/relations.md +486 -0
  83. package/wiki/references/base/repositories.md +40 -549
  84. package/wiki/references/base/services.md +28 -4
  85. package/wiki/references/components/authentication.md +22 -2
  86. package/wiki/references/components/health-check.md +12 -0
  87. package/wiki/references/components/index.md +23 -0
  88. package/wiki/references/components/mail.md +687 -0
  89. package/wiki/references/components/request-tracker.md +16 -0
  90. package/wiki/references/components/socket-io.md +18 -0
  91. package/wiki/references/components/static-asset.md +14 -26
  92. package/wiki/references/components/swagger.md +17 -0
  93. package/wiki/references/configuration/environment-variables.md +427 -0
  94. package/wiki/references/configuration/index.md +73 -0
  95. package/wiki/references/helpers/cron.md +14 -0
  96. package/wiki/references/helpers/crypto.md +15 -0
  97. package/wiki/references/helpers/env.md +16 -0
  98. package/wiki/references/helpers/error.md +17 -0
  99. package/wiki/references/helpers/index.md +15 -0
  100. package/wiki/references/helpers/inversion.md +24 -4
  101. package/wiki/references/helpers/logger.md +19 -0
  102. package/wiki/references/helpers/network.md +11 -0
  103. package/wiki/references/helpers/queue.md +19 -0
  104. package/wiki/references/helpers/redis.md +21 -0
  105. package/wiki/references/helpers/socket-io.md +24 -5
  106. package/wiki/references/helpers/storage.md +18 -10
  107. package/wiki/references/helpers/testing.md +18 -0
  108. package/wiki/references/helpers/types.md +167 -0
  109. package/wiki/references/helpers/uid.md +167 -0
  110. package/wiki/references/helpers/worker-thread.md +16 -0
  111. package/wiki/references/index.md +177 -0
  112. package/wiki/references/quick-reference.md +634 -0
  113. package/wiki/references/src-details/boot.md +3 -3
  114. package/wiki/references/src-details/dev-configs.md +0 -4
  115. package/wiki/references/src-details/docs.md +2 -2
  116. package/wiki/references/src-details/index.md +86 -0
  117. package/wiki/references/src-details/inversion.md +1 -6
  118. package/wiki/references/src-details/mcp-server.md +3 -15
  119. package/wiki/references/utilities/index.md +86 -10
  120. package/wiki/references/utilities/jsx.md +577 -0
  121. package/wiki/references/utilities/request.md +0 -2
  122. package/wiki/references/utilities/statuses.md +740 -0
  123. package/wiki/changelogs/planned-transaction-support.md +0 -216
  124. package/wiki/get-started/best-practices/api-usage-examples.md +0 -266
  125. package/wiki/get-started/best-practices/architectural-patterns.md +0 -170
  126. package/wiki/get-started/best-practices/data-modeling.md +0 -177
  127. package/wiki/get-started/best-practices/deployment-strategies.md +0 -121
  128. package/wiki/get-started/best-practices/performance-optimization.md +0 -88
  129. package/wiki/get-started/best-practices/security-guidelines.md +0 -99
  130. package/wiki/get-started/core-concepts/components.md +0 -98
  131. package/wiki/get-started/core-concepts/persistent.md +0 -543
  132. package/wiki/get-started/index.md +0 -65
  133. package/wiki/get-started/philosophy.md +0 -296
  134. package/wiki/get-started/prerequisites.md +0 -113
@@ -0,0 +1,167 @@
1
+ # UID Helper
2
+
3
+ Snowflake ID generator with Base62 encoding for generating unique, time-sortable IDs suitable for distributed systems.
4
+
5
+ ## Quick Reference
6
+
7
+ | Class | Purpose | Key Features |
8
+ |-------|---------|--------------|
9
+ | **SnowflakeConfig** | Configuration constants | Bit structure, limits, defaults |
10
+ | **SnowflakeUidHelper** | ID generation | Snowflake IDs, Base62 encoding/decoding |
11
+
12
+ ### Snowflake ID Structure (70 bits)
13
+
14
+ | Component | Bits | Range | Purpose |
15
+ |-----------|------|-------|---------|
16
+ | Timestamp | 48 | ~8,919 years | Time since epoch |
17
+ | Worker ID | 10 | 0-1023 | Unique worker identifier |
18
+ | Sequence | 12 | 0-4095 | IDs per millisecond |
19
+
20
+ ### Key Specifications
21
+
22
+ | Spec | Value |
23
+ |------|-------|
24
+ | Base62 Output | 10-12 characters |
25
+ | Throughput | 4,096,000 IDs/second/worker |
26
+ | Max Workers | 1024 |
27
+ | Lifespan | Until ~10,944 AD |
28
+ | Default Epoch | 2025-01-01 00:00:00 UTC |
29
+
30
+ ## Basic Usage
31
+
32
+ ### Creating an Instance
33
+
34
+ ```typescript
35
+ import { SnowflakeUidHelper, SnowflakeConfig } from '@venizia/ignis-helpers';
36
+
37
+ // Use defaults (workerId: 199, epoch: 2025-01-01 00:00:00 UTC)
38
+ const generator = new SnowflakeUidHelper();
39
+
40
+ // Or with custom values
41
+ const customGenerator = new SnowflakeUidHelper({
42
+ workerId: 123,
43
+ epoch: BigInt(1735689600000),
44
+ });
45
+ ```
46
+
47
+ ### Generating IDs
48
+
49
+ ```typescript
50
+ // Generate Base62 encoded ID (recommended for most use cases)
51
+ const id = generator.nextId();
52
+ // => e.g., "9du1sJXO88"
53
+
54
+ // Generate raw Snowflake ID as bigint
55
+ const snowflakeId = generator.nextSnowflake();
56
+ // => e.g., 130546360012247045n
57
+ ```
58
+
59
+ ## Base62 Encoding/Decoding
60
+
61
+ ### Encode a BigInt to Base62
62
+
63
+ ```typescript
64
+ const encoded = generator.encodeBase62(130546360012247045n);
65
+ // => "9du1sJXO88"
66
+ ```
67
+
68
+ ### Decode Base62 to BigInt
69
+
70
+ ```typescript
71
+ const decoded = generator.decodeBase62("9du1sJXO88");
72
+ // => 130546360012247045n
73
+ ```
74
+
75
+ ## Parsing and Extracting Components
76
+
77
+ ### Parse a Base62 ID
78
+
79
+ ```typescript
80
+ const parsed = generator.parseId("9du1sJXO88");
81
+ // => {
82
+ // raw: 130546360012247045n,
83
+ // timestamp: Date,
84
+ // workerId: 199,
85
+ // sequence: 0
86
+ // }
87
+ ```
88
+
89
+ ### Extract Individual Components
90
+
91
+ ```typescript
92
+ const snowflakeId = generator.nextSnowflake();
93
+
94
+ // Extract timestamp
95
+ const timestamp = generator.extractTimestamp(snowflakeId);
96
+ // => Date object
97
+
98
+ // Extract worker ID
99
+ const workerId = generator.extractWorkerId(snowflakeId);
100
+ // => 199
101
+
102
+ // Extract sequence
103
+ const sequence = generator.extractSequence(snowflakeId);
104
+ // => 0-4095
105
+ ```
106
+
107
+ ## Configuration
108
+
109
+ ### SnowflakeConfig Constants
110
+
111
+ ```typescript
112
+ import { SnowflakeConfig } from '@venizia/ignis-helpers';
113
+
114
+ SnowflakeConfig.DEFAULT_EPOCH // BigInt(1735689600000) - 2025-01-01 00:00:00 UTC
115
+ SnowflakeConfig.MAX_WORKER_ID // 1023n
116
+ SnowflakeConfig.MAX_SEQUENCE // 4095n
117
+ SnowflakeConfig.TIMESTAMP_SHIFT // 22n
118
+ SnowflakeConfig.WORKER_ID_SHIFT // 12n
119
+ ```
120
+
121
+ ### Constructor Options
122
+
123
+ | Option | Type | Default | Description |
124
+ |--------|------|---------|-------------|
125
+ | `workerId` | `number` | `199` | Worker ID (0-1023) |
126
+ | `epoch` | `bigint` | `SnowflakeConfig.DEFAULT_EPOCH` | Custom epoch timestamp in milliseconds |
127
+
128
+ ## Error Handling
129
+
130
+ The helper throws errors in these cases:
131
+
132
+ - **Invalid Worker ID**: Worker ID outside 0-1023 range
133
+ - **Invalid Epoch**: Epoch is zero, negative, or in the future
134
+ - **Clock Backward**: System clock moved backward by more than 100ms
135
+ - **Invalid Base62**: Decoding a string with invalid characters
136
+
137
+ ```typescript
138
+ try {
139
+ const generator = new SnowflakeUidHelper({ workerId: 2000 }); // Invalid
140
+ } catch (error) {
141
+ // Worker ID must be between 0 and 1023
142
+ }
143
+ ```
144
+
145
+ ## Best Practices
146
+
147
+ 1. **Use unique worker IDs** in distributed systems to prevent ID collisions
148
+ 2. **Keep epoch consistent** across all instances to ensure proper ID ordering
149
+ 3. **Use `nextId()`** for most cases (returns compact Base62 string)
150
+ 4. **Use `nextSnowflake()`** when you need the raw bigint for arithmetic operations
151
+
152
+ ## See Also
153
+
154
+ - **Related Concepts:**
155
+ - [Models](/guides/core-concepts/persistent/models) - Using UIDs as primary keys
156
+ - [Services](/guides/core-concepts/services) - Generating unique IDs
157
+
158
+ - **Other Helpers:**
159
+ - [Helpers Index](./index) - All available helpers
160
+ - [Crypto Helper](./crypto) - For cryptographic random values
161
+
162
+ - **External Resources:**
163
+ - [Snowflake ID](https://en.wikipedia.org/wiki/Snowflake_ID) - Snowflake algorithm explained
164
+ - [Base62 Encoding](https://en.wikipedia.org/wiki/Base62) - Base62 encoding overview
165
+
166
+ - **Best Practices:**
167
+ - [Data Modeling](/best-practices/data-modeling) - ID generation strategies
@@ -160,3 +160,19 @@ const workerBus = new BaseWorkerBusHelper({
160
160
  }),
161
161
  });
162
162
  ```
163
+
164
+ ## See Also
165
+
166
+ - **Related Concepts:**
167
+ - [Services](/guides/core-concepts/services) - CPU-intensive tasks in services
168
+
169
+ - **Other Helpers:**
170
+ - [Helpers Index](./index) - All available helpers
171
+ - [Queue Helper](./queue) - For I/O-bound background tasks
172
+
173
+ - **External Resources:**
174
+ - [Node.js Worker Threads](https://nodejs.org/api/worker_threads.html) - Official worker_threads API
175
+ - [MessageChannel](https://nodejs.org/api/worker_threads.html#class-messagechannel) - Two-way communication
176
+
177
+ - **Best Practices:**
178
+ - [Performance Optimization](/best-practices/performance-optimization) - Worker thread strategies
@@ -0,0 +1,177 @@
1
+ # API Reference
2
+
3
+ Complete reference documentation for the Ignis framework. Find detailed API docs, type definitions, and usage examples for every class, component, and utility in the framework.
4
+
5
+ <div class="guide-cards">
6
+
7
+ <a href="./base/" class="guide-card highlight">
8
+ <span class="guide-icon">🏗️</span>
9
+ <h3>Base Abstractions</h3>
10
+ <p>Application, Controller, Service, Repository, Model</p>
11
+ </a>
12
+
13
+ <a href="./components/" class="guide-card">
14
+ <span class="guide-icon">🧩</span>
15
+ <h3>Components</h3>
16
+ <p>Auth, Mail, Socket.IO, Swagger, Health Check</p>
17
+ </a>
18
+
19
+ <a href="./helpers/" class="guide-card">
20
+ <span class="guide-icon">🛠️</span>
21
+ <h3>Helpers</h3>
22
+ <p>Logger, Redis, Queue, Storage, Cron, Crypto</p>
23
+ </a>
24
+
25
+ <a href="./utilities/" class="guide-card">
26
+ <span class="guide-icon">⚙️</span>
27
+ <h3>Utilities</h3>
28
+ <p>Date, Parse, Promise, Schema, Performance</p>
29
+ </a>
30
+
31
+ <a href="./configuration/" class="guide-card">
32
+ <span class="guide-icon">📝</span>
33
+ <h3>Configuration</h3>
34
+ <p>Environment variables and settings</p>
35
+ </a>
36
+
37
+ <a href="./src-details/" class="guide-card">
38
+ <span class="guide-icon">📦</span>
39
+ <h3>Framework Internals</h3>
40
+ <p>Package structure and architecture</p>
41
+ </a>
42
+
43
+ </div>
44
+
45
+ ## Find What You Need
46
+
47
+ <div class="roadmap">
48
+
49
+ <div class="roadmap-stage">
50
+ <div class="stage-header">
51
+ <span class="stage-num">1</span>
52
+ <h4>Building an API</h4>
53
+ </div>
54
+ <p><a href="./base/application">Application</a> → <a href="./base/controllers">Controllers</a> → <a href="./base/services">Services</a> → <a href="./base/repositories/">Repositories</a></p>
55
+ <span class="stage-desc">Request handling, business logic, and data access</span>
56
+ </div>
57
+
58
+ <div class="roadmap-stage">
59
+ <div class="stage-header">
60
+ <span class="stage-num">2</span>
61
+ <h4>Data Layer</h4>
62
+ </div>
63
+ <p><a href="./base/models">Models</a> → <a href="./base/datasources">DataSources</a> → <a href="./base/filter-system/">Filtering</a> → <a href="./base/repositories/relations">Relations</a></p>
64
+ <span class="stage-desc">Entities, database connections, and query building</span>
65
+ </div>
66
+
67
+ <div class="roadmap-stage">
68
+ <div class="stage-header">
69
+ <span class="stage-num">3</span>
70
+ <h4>Adding Features</h4>
71
+ </div>
72
+ <p><a href="./components/authentication">Auth</a> → <a href="./components/socket-io">Real-time</a> → <a href="./components/mail">Email</a> → <a href="./components/swagger">API Docs</a></p>
73
+ <span class="stage-desc">Pre-built components for common features</span>
74
+ </div>
75
+
76
+ <div class="roadmap-stage">
77
+ <div class="stage-header">
78
+ <span class="stage-num">4</span>
79
+ <h4>Infrastructure</h4>
80
+ </div>
81
+ <p><a href="./helpers/logger">Logging</a> → <a href="./helpers/redis">Caching</a> → <a href="./helpers/queue">Queues</a> → <a href="./helpers/cron">Scheduling</a></p>
82
+ <span class="stage-desc">Background jobs, caching, and observability</span>
83
+ </div>
84
+
85
+ <div class="roadmap-stage">
86
+ <div class="stage-header">
87
+ <span class="stage-num">5</span>
88
+ <h4>Advanced Patterns</h4>
89
+ </div>
90
+ <p><a href="./base/dependency-injection">Dependency Injection</a> → <a href="./base/providers">Custom Providers</a> → <a href="./base/middlewares">Middlewares</a> → <a href="./base/components">Components</a></p>
91
+ <span class="stage-desc">Advanced architecture patterns and customization</span>
92
+ </div>
93
+
94
+ <div class="roadmap-stage">
95
+ <div class="stage-header">
96
+ <span class="stage-num">6</span>
97
+ <h4>Production Ready</h4>
98
+ </div>
99
+ <p><a href="./base/middlewares">Error Handling</a> → <a href="./components/health-check">Health Checks</a> → <a href="./configuration/environment-variables">Configuration</a> → <a href="./base/bootstrapping">Auto-Discovery</a></p>
100
+ <span class="stage-desc">Production deployment, monitoring, and reliability</span>
101
+ </div>
102
+
103
+ <div class="roadmap-stage">
104
+ <div class="stage-header">
105
+ <span class="stage-num">7</span>
106
+ <h4>Testing & Quality</h4>
107
+ </div>
108
+ <p><a href="./helpers/testing">Unit Testing</a> → <a href="./base/repositories/advanced">Mocking & Stubs</a> → <a href="./quick-reference">Best Practices</a></p>
109
+ <span class="stage-desc">Testing strategies, quality assurance, and code review</span>
110
+ </div>
111
+
112
+ </div>
113
+
114
+ ::: tip Looking for tutorials?
115
+ Check out the [Getting Started Guide](/guides/) for step-by-step tutorials and the [Core Concepts](/guides/core-concepts/application/) for architectural explanations.
116
+ :::
117
+
118
+ ## Quick Examples
119
+
120
+ **Define a Controller:**
121
+ ```typescript
122
+ @controller({ path: '/users' })
123
+ class UserController extends BaseController {
124
+ @get({ configs: { path: '/:id' } })
125
+ getUser(c: Context) {
126
+ return c.json({ id: c.req.param('id') });
127
+ }
128
+ }
129
+ ```
130
+
131
+ **Query with Repository:**
132
+ ```typescript
133
+ const users = await userRepo.find({
134
+ where: { isActive: true },
135
+ orderBy: { createdAt: 'desc' },
136
+ limit: 10,
137
+ });
138
+ ```
139
+
140
+ **Schedule a Job:**
141
+ ```typescript
142
+ CronHelper.schedule('0 * * * *', async () => {
143
+ await cleanupExpiredSessions();
144
+ });
145
+ ```
146
+
147
+ ## Common Imports
148
+
149
+ ```typescript
150
+ // Core framework
151
+ import {
152
+ BaseApplication,
153
+ BaseController,
154
+ BaseService,
155
+ BaseRepository,
156
+ controller,
157
+ get, post, put, del,
158
+ inject,
159
+ } from '@venizia/ignis';
160
+
161
+ // Helpers
162
+ import {
163
+ LoggerFactory,
164
+ RedisHelper,
165
+ QueueHelper,
166
+ } from '@venizia/ignis-helpers';
167
+
168
+ // DI Container
169
+ import { Container } from '@venizia/ignis-inversion';
170
+ ```
171
+
172
+ ## See Also
173
+
174
+ - [Getting Started](/guides/) - New to Ignis? Start here
175
+ - [Core Concepts](/guides/core-concepts/application/) - Deep dive into architecture
176
+ - [Best Practices](/best-practices/) - Production patterns
177
+ - [Changelogs](/changelogs/) - Version history