@morojs/moro 1.5.17 → 1.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +48 -65
- package/dist/core/auth/morojs-adapter.js +12 -16
- package/dist/core/auth/morojs-adapter.js.map +1 -1
- package/dist/core/config/file-loader.d.ts +5 -0
- package/dist/core/config/file-loader.js +171 -0
- package/dist/core/config/file-loader.js.map +1 -1
- package/dist/core/config/index.d.ts +10 -39
- package/dist/core/config/index.js +29 -66
- package/dist/core/config/index.js.map +1 -1
- package/dist/core/config/loader.d.ts +7 -0
- package/dist/core/config/loader.js +269 -0
- package/dist/core/config/loader.js.map +1 -0
- package/dist/core/config/schema.js +31 -41
- package/dist/core/config/schema.js.map +1 -1
- package/dist/core/config/utils.d.ts +2 -9
- package/dist/core/config/utils.js +32 -19
- package/dist/core/config/utils.js.map +1 -1
- package/dist/core/config/validation.d.ts +17 -0
- package/dist/core/config/validation.js +131 -0
- package/dist/core/config/validation.js.map +1 -0
- package/dist/core/database/adapters/mongodb.d.ts +0 -10
- package/dist/core/database/adapters/mongodb.js +2 -23
- package/dist/core/database/adapters/mongodb.js.map +1 -1
- package/dist/core/database/adapters/mysql.d.ts +0 -11
- package/dist/core/database/adapters/mysql.js +0 -1
- package/dist/core/database/adapters/mysql.js.map +1 -1
- package/dist/core/database/adapters/postgresql.d.ts +1 -9
- package/dist/core/database/adapters/postgresql.js +1 -1
- package/dist/core/database/adapters/postgresql.js.map +1 -1
- package/dist/core/database/adapters/redis.d.ts +0 -9
- package/dist/core/database/adapters/redis.js +4 -14
- package/dist/core/database/adapters/redis.js.map +1 -1
- package/dist/core/framework.d.ts +7 -6
- package/dist/core/framework.js +16 -131
- package/dist/core/framework.js.map +1 -1
- package/dist/core/http/http-server.d.ts +0 -12
- package/dist/core/http/http-server.js +23 -151
- package/dist/core/http/http-server.js.map +1 -1
- package/dist/core/http/router.d.ts +0 -12
- package/dist/core/http/router.js +36 -114
- package/dist/core/http/router.js.map +1 -1
- package/dist/core/logger/filters.js +4 -12
- package/dist/core/logger/filters.js.map +1 -1
- package/dist/core/logger/index.d.ts +1 -1
- package/dist/core/logger/index.js +1 -2
- package/dist/core/logger/index.js.map +1 -1
- package/dist/core/logger/logger.d.ts +13 -29
- package/dist/core/logger/logger.js +203 -380
- package/dist/core/logger/logger.js.map +1 -1
- package/dist/core/logger/outputs.js +2 -0
- package/dist/core/logger/outputs.js.map +1 -1
- package/dist/core/middleware/built-in/auth.js +17 -88
- package/dist/core/middleware/built-in/auth.js.map +1 -1
- package/dist/core/middleware/built-in/cache.js +1 -3
- package/dist/core/middleware/built-in/cache.js.map +1 -1
- package/dist/core/middleware/built-in/index.d.ts +0 -1
- package/dist/core/middleware/built-in/index.js +1 -6
- package/dist/core/middleware/built-in/index.js.map +1 -1
- package/dist/core/middleware/built-in/request-logger.js +2 -3
- package/dist/core/middleware/built-in/request-logger.js.map +1 -1
- package/dist/core/middleware/built-in/sse.js +7 -9
- package/dist/core/middleware/built-in/sse.js.map +1 -1
- package/dist/core/modules/auto-discovery.d.ts +0 -17
- package/dist/core/modules/auto-discovery.js +12 -367
- package/dist/core/modules/auto-discovery.js.map +1 -1
- package/dist/core/modules/modules.js +2 -12
- package/dist/core/modules/modules.js.map +1 -1
- package/dist/core/networking/adapters/ws-adapter.d.ts +1 -1
- package/dist/core/networking/adapters/ws-adapter.js +2 -2
- package/dist/core/networking/adapters/ws-adapter.js.map +1 -1
- package/dist/core/networking/service-discovery.js +7 -7
- package/dist/core/networking/service-discovery.js.map +1 -1
- package/dist/core/routing/index.d.ts +0 -20
- package/dist/core/routing/index.js +13 -178
- package/dist/core/routing/index.js.map +1 -1
- package/dist/core/runtime/node-adapter.js +6 -12
- package/dist/core/runtime/node-adapter.js.map +1 -1
- package/dist/moro.d.ts +0 -48
- package/dist/moro.js +148 -456
- package/dist/moro.js.map +1 -1
- package/dist/types/config.d.ts +2 -58
- package/dist/types/core.d.ts +40 -34
- package/dist/types/http.d.ts +1 -16
- package/dist/types/logger.d.ts +0 -7
- package/dist/types/module.d.ts +0 -11
- package/package.json +2 -2
- package/src/core/auth/morojs-adapter.ts +13 -18
- package/src/core/config/file-loader.ts +233 -0
- package/src/core/config/index.ts +32 -77
- package/src/core/config/loader.ts +633 -0
- package/src/core/config/schema.ts +31 -41
- package/src/core/config/utils.ts +29 -22
- package/src/core/config/validation.ts +140 -0
- package/src/core/database/README.md +16 -26
- package/src/core/database/adapters/mongodb.ts +2 -30
- package/src/core/database/adapters/mysql.ts +0 -14
- package/src/core/database/adapters/postgresql.ts +2 -12
- package/src/core/database/adapters/redis.ts +4 -27
- package/src/core/framework.ts +23 -163
- package/src/core/http/http-server.ts +36 -176
- package/src/core/http/router.ts +38 -127
- package/src/core/logger/filters.ts +4 -12
- package/src/core/logger/index.ts +0 -1
- package/src/core/logger/logger.ts +216 -427
- package/src/core/logger/outputs.ts +2 -0
- package/src/core/middleware/built-in/auth.ts +17 -98
- package/src/core/middleware/built-in/cache.ts +1 -3
- package/src/core/middleware/built-in/index.ts +0 -8
- package/src/core/middleware/built-in/request-logger.ts +1 -3
- package/src/core/middleware/built-in/sse.ts +7 -9
- package/src/core/modules/auto-discovery.ts +13 -476
- package/src/core/modules/modules.ts +9 -20
- package/src/core/networking/adapters/ws-adapter.ts +5 -2
- package/src/core/networking/service-discovery.ts +7 -6
- package/src/core/routing/index.ts +14 -198
- package/src/core/runtime/node-adapter.ts +6 -12
- package/src/moro.ts +166 -554
- package/src/types/config.ts +2 -59
- package/src/types/core.ts +45 -47
- package/src/types/http.ts +1 -23
- package/src/types/logger.ts +0 -9
- package/src/types/module.ts +0 -12
- package/dist/core/config/config-manager.d.ts +0 -44
- package/dist/core/config/config-manager.js +0 -114
- package/dist/core/config/config-manager.js.map +0 -1
- package/dist/core/config/config-sources.d.ts +0 -21
- package/dist/core/config/config-sources.js +0 -502
- package/dist/core/config/config-sources.js.map +0 -1
- package/dist/core/config/config-validator.d.ts +0 -21
- package/dist/core/config/config-validator.js +0 -765
- package/dist/core/config/config-validator.js.map +0 -1
- package/dist/core/middleware/built-in/jwt-helpers.d.ts +0 -118
- package/dist/core/middleware/built-in/jwt-helpers.js +0 -221
- package/dist/core/middleware/built-in/jwt-helpers.js.map +0 -1
- package/src/core/config/config-manager.ts +0 -133
- package/src/core/config/config-sources.ts +0 -596
- package/src/core/config/config-validator.ts +0 -1078
- package/src/core/middleware/built-in/jwt-helpers.ts +0 -240
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|

|
|
6
6
|
|
|
7
|
-
**
|
|
7
|
+
**High-performance multi-runtime framework with intelligent routing**
|
|
8
8
|
*Functional • Type-safe • Multi-environment • Production-ready*
|
|
9
9
|
|
|
10
10
|
[](https://badge.fury.io/js/@morojs%2Fmoro)
|
|
@@ -18,22 +18,20 @@
|
|
|
18
18
|
|
|
19
19
|
---
|
|
20
20
|
|
|
21
|
-
##
|
|
21
|
+
## Why Moro?
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
Moro eliminates the pain points of traditional Node.js frameworks with **intelligent routing** and **automatic middleware ordering**. No more debugging middleware order issues or wrestling with type safety!
|
|
24
24
|
|
|
25
|
-
**
|
|
25
|
+
- **Multi-Runtime Support** - Deploy to Node.js, Vercel Edge, AWS Lambda, Cloudflare Workers
|
|
26
|
+
- **Intelligent Routing** - Chainable + schema-first APIs with automatic middleware ordering
|
|
27
|
+
- **Enterprise Authentication** - Auth.js integration with RBAC, OAuth, and native adapter
|
|
28
|
+
- **Universal Validation** - Support for Zod, Joi, Yup, Class Validator with full TypeScript inference
|
|
29
|
+
- **WebSocket Support** - Pluggable adapters for Socket.IO, native WebSockets, or auto-detection
|
|
30
|
+
- **Native Performance** - Zero framework overhead, optimized for each runtime
|
|
31
|
+
- **Functional Architecture** - No decorators, pure functional patterns
|
|
32
|
+
- **Zero Order Dependencies** - Framework handles optimal middleware execution
|
|
26
33
|
|
|
27
|
-
|
|
28
|
-
- **Intelligent Routing** - Automatic middleware ordering with chainable and schema-first API approaches
|
|
29
|
-
- **Enterprise Authentication** - Built-in Auth.js integration with RBAC, OAuth providers, and custom native adapter
|
|
30
|
-
- **Universal Validation** - Use any validation library (Zod, Joi, Yup, Class Validator) with full TypeScript inference
|
|
31
|
-
- **WebSocket Support** - Pluggable adapters for Socket.IO, native WebSockets, or automatic detection
|
|
32
|
-
- **Zero Dependencies** - Lightweight core with optional peer dependencies for flexibility
|
|
33
|
-
- **Functional Architecture** - Pure functional patterns without decorators for better performance
|
|
34
|
-
- **Type Safety** - Complete TypeScript support with compile-time and runtime type validation
|
|
35
|
-
|
|
36
|
-
## Performance
|
|
34
|
+
## Superior Performance
|
|
37
35
|
|
|
38
36
|
| Framework | Req/sec | Latency | Memory |
|
|
39
37
|
|-----------|---------|---------|--------|
|
|
@@ -105,35 +103,35 @@ const app = createAppWorker();
|
|
|
105
103
|
export default { fetch: app.getHandler() };
|
|
106
104
|
```
|
|
107
105
|
|
|
108
|
-
##
|
|
106
|
+
## What Makes Moro Different?
|
|
109
107
|
|
|
110
|
-
### **
|
|
108
|
+
### **No More Middleware Order Hell**
|
|
111
109
|
|
|
112
|
-
|
|
110
|
+
**Traditional frameworks:**
|
|
111
|
+
```typescript
|
|
112
|
+
// Express - Order matters, easy to break
|
|
113
|
+
app.use(cors()); // Must be first
|
|
114
|
+
app.use(helmet()); // Must be early
|
|
115
|
+
app.use(bodyParser()); // Must be before validation
|
|
116
|
+
app.use(rateLimit()); // Must be before routes
|
|
117
|
+
app.use(validation()); // Must be before handler
|
|
118
|
+
app.post('/users', handler); // Must be last
|
|
119
|
+
```
|
|
113
120
|
|
|
121
|
+
**Moro - Order independent:**
|
|
114
122
|
```typescript
|
|
115
|
-
//
|
|
123
|
+
// Moro - Framework handles optimal ordering
|
|
116
124
|
app.post('/users')
|
|
117
|
-
.body(UserSchema)
|
|
118
|
-
.rateLimit({ requests: 10, window: 60000 })
|
|
119
|
-
.auth({ roles: ['user'] })
|
|
120
|
-
.handler(createUser);
|
|
121
|
-
|
|
122
|
-
// Behind the scenes, MoroJS executes in this order:
|
|
123
|
-
// 1. CORS & Security (helmet)
|
|
124
|
-
// 2. Rate Limiting
|
|
125
|
-
// 3. Authentication & Authorization
|
|
126
|
-
// 4. Body Parsing & Validation
|
|
127
|
-
// 5. Custom Middleware
|
|
128
|
-
// 6. Route Handler
|
|
125
|
+
.body(UserSchema) // Framework places in validation phase
|
|
126
|
+
.rateLimit({ requests: 10, window: 60000 }) // Rate limit phase
|
|
127
|
+
.auth({ roles: ['user'] }) // Auth phase
|
|
128
|
+
.handler(createUser); // Always executed last
|
|
129
129
|
```
|
|
130
130
|
|
|
131
|
-
### **Universal Validation
|
|
132
|
-
|
|
133
|
-
MoroJS provides a unified validation interface that works with any validation library while maintaining full TypeScript inference:
|
|
131
|
+
### **Universal Validation with Full Type Safety**
|
|
134
132
|
|
|
135
133
|
```typescript
|
|
136
|
-
//
|
|
134
|
+
// Use any validation library - Zod (default)
|
|
137
135
|
import { z } from '@morojs/moro';
|
|
138
136
|
const UserSchema = z.object({
|
|
139
137
|
name: z.string().min(2).max(50),
|
|
@@ -141,29 +139,20 @@ const UserSchema = z.object({
|
|
|
141
139
|
age: z.number().min(18).optional()
|
|
142
140
|
});
|
|
143
141
|
|
|
144
|
-
//
|
|
142
|
+
// Or Joi with adapter
|
|
145
143
|
import { joi } from '@morojs/moro';
|
|
146
144
|
import Joi from 'joi';
|
|
147
|
-
const
|
|
145
|
+
const UserSchema = joi(Joi.object({
|
|
148
146
|
name: Joi.string().min(2).max(50).required(),
|
|
149
147
|
email: Joi.string().email().required(),
|
|
150
148
|
age: Joi.number().min(18).optional()
|
|
151
149
|
}));
|
|
152
150
|
|
|
153
|
-
// Using Yup with MoroJS adapter
|
|
154
|
-
import { yup } from '@morojs/moro';
|
|
155
|
-
import * as Yup from 'yup';
|
|
156
|
-
const UserSchemaYup = yup(Yup.object({
|
|
157
|
-
name: Yup.string().min(2).max(50).required(),
|
|
158
|
-
email: Yup.string().email().required(),
|
|
159
|
-
age: Yup.number().min(18).optional()
|
|
160
|
-
}));
|
|
161
|
-
|
|
162
|
-
// All validation libraries provide the same TypeScript experience
|
|
163
151
|
app.post('/users')
|
|
164
|
-
.body(UserSchema) //
|
|
152
|
+
.body(UserSchema) // Works with any validation library!
|
|
165
153
|
.handler((req, res) => {
|
|
166
|
-
|
|
154
|
+
// req.body is fully typed regardless of validation library
|
|
155
|
+
const user = req.body; // ✨ Fully typed
|
|
167
156
|
return { success: true, data: user };
|
|
168
157
|
});
|
|
169
158
|
```
|
|
@@ -322,23 +311,17 @@ await app.loadModule(UsersModule);
|
|
|
322
311
|
- **Functional Architecture** - No decorators, pure functions, better performance
|
|
323
312
|
- **Type Safety** - Universal validation with compile-time and runtime type safety
|
|
324
313
|
|
|
325
|
-
##
|
|
326
|
-
|
|
327
|
-
**
|
|
328
|
-
|
|
329
|
-
**
|
|
330
|
-
|
|
331
|
-
**
|
|
332
|
-
|
|
333
|
-
**
|
|
334
|
-
|
|
335
|
-
**
|
|
336
|
-
|
|
337
|
-
**Type Safety Throughout** - End-to-end TypeScript support ensures compile-time validation, runtime type checking, and full IDE integration
|
|
338
|
-
|
|
339
|
-
**Developer Experience** - Clean chainable APIs and schema-first routing patterns make complex applications simple to build and maintain
|
|
340
|
-
|
|
341
|
-
**Production Features** - Circuit breakers, rate limiting, event systems, caching, monitoring, and performance optimization built-in
|
|
314
|
+
## Why Choose Moro?
|
|
315
|
+
|
|
316
|
+
**Same API everywhere** - Write once, deploy to any runtime
|
|
317
|
+
**No middleware dependencies** - Framework handles optimal ordering
|
|
318
|
+
**Enterprise authentication** - Auth.js integration with native adapter
|
|
319
|
+
**Validation flexibility** - Use any validation library (Zod, Joi, Yup, Class Validator)
|
|
320
|
+
**WebSocket choice** - Socket.IO, native WebSockets, or auto-detection
|
|
321
|
+
**Full type safety** - Universal validation provides end-to-end TypeScript inference
|
|
322
|
+
**Clean APIs** - Chainable and schema-first approaches
|
|
323
|
+
**Production ready** - Circuit breakers, rate limiting, events, RBAC
|
|
324
|
+
**Performance optimized** - Runtime-specific adapters
|
|
342
325
|
|
|
343
326
|
## Contributing
|
|
344
327
|
|
|
@@ -12,7 +12,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.MoroJSAuth = MoroJSAuth;
|
|
13
13
|
exports.createAuthMiddleware = createAuthMiddleware;
|
|
14
14
|
const logger_1 = require("../logger");
|
|
15
|
-
const logger = (0, logger_1.createFrameworkLogger)('AuthAdapter');
|
|
16
15
|
// Mock Auth function - would be imported from @auth/core
|
|
17
16
|
const Auth = async (request, config) => {
|
|
18
17
|
// This is a placeholder implementation
|
|
@@ -156,7 +155,7 @@ async function MoroJSAuth(config) {
|
|
|
156
155
|
basePath,
|
|
157
156
|
raw: (code, ...message) => {
|
|
158
157
|
if (config.morojs?.debug) {
|
|
159
|
-
logger.debug(`[MoroJS Auth] ${code}:`, 'AuthAdapter', { message });
|
|
158
|
+
logger_1.logger.debug(`[MoroJS Auth] ${code}:`, 'AuthAdapter', { code, message });
|
|
160
159
|
}
|
|
161
160
|
},
|
|
162
161
|
});
|
|
@@ -169,7 +168,7 @@ async function MoroJSAuth(config) {
|
|
|
169
168
|
await fromWebResponse(finalResponse, res);
|
|
170
169
|
}
|
|
171
170
|
catch (error) {
|
|
172
|
-
logger.error('[MoroJS Auth] Error', 'AuthAdapter', {
|
|
171
|
+
logger_1.logger.error('[MoroJS Auth] Error:', 'AuthAdapter', {
|
|
173
172
|
error: error instanceof Error ? error.message : String(error),
|
|
174
173
|
});
|
|
175
174
|
// Robust error handling - check if response methods exist
|
|
@@ -214,7 +213,7 @@ async function MoroJSAuth(config) {
|
|
|
214
213
|
}
|
|
215
214
|
catch (error) {
|
|
216
215
|
if (config.morojs?.debug) {
|
|
217
|
-
logger.error('[MoroJS Auth] Session error', 'AuthAdapter', {
|
|
216
|
+
logger_1.logger.error('[MoroJS Auth] Session error:', 'AuthAdapter', {
|
|
218
217
|
error: error instanceof Error ? error.message : String(error),
|
|
219
218
|
});
|
|
220
219
|
}
|
|
@@ -229,18 +228,15 @@ async function MoroJSAuth(config) {
|
|
|
229
228
|
* This creates a MoroJS-compatible middleware for authentication
|
|
230
229
|
*/
|
|
231
230
|
function createAuthMiddleware(config) {
|
|
232
|
-
logger.info('createAuthMiddleware called - creating middleware function', 'AuthAdapter');
|
|
231
|
+
logger_1.logger.info('🏭 createAuthMiddleware called - creating middleware function', 'AuthAdapter');
|
|
233
232
|
// Return a function that MoroJS can call directly
|
|
234
233
|
return async (app) => {
|
|
235
|
-
logger.info('Installing Auth.js middleware...', 'AuthAdapter');
|
|
236
|
-
logger.
|
|
237
|
-
appType: typeof app,
|
|
238
|
-
appConstructor: app.constructor.name,
|
|
239
|
-
});
|
|
234
|
+
logger_1.logger.info('🔧 Installing Auth.js middleware...', 'AuthAdapter');
|
|
235
|
+
logger_1.logger.info(`📦 App object received: ${typeof app} ${app.constructor.name}`, 'AuthAdapter');
|
|
240
236
|
// Get the hooks from the app's middleware system
|
|
241
237
|
const hooks = app.coreFramework?.middlewareManager?.hooks || app.middlewareManager?.hooks;
|
|
242
238
|
if (!hooks) {
|
|
243
|
-
logger.error('Could not access MoroJS hooks system', 'AuthAdapter');
|
|
239
|
+
logger_1.logger.error('❌ Could not access MoroJS hooks system', 'AuthAdapter');
|
|
244
240
|
return;
|
|
245
241
|
}
|
|
246
242
|
const options = {};
|
|
@@ -249,9 +245,9 @@ function createAuthMiddleware(config) {
|
|
|
249
245
|
const basePath = mergedConfig.basePath || '/api/auth';
|
|
250
246
|
// Register request hook
|
|
251
247
|
hooks.before('request', async (context) => {
|
|
252
|
-
logger.debug('Native adapter hook starting', 'AuthAdapter');
|
|
248
|
+
logger_1.logger.debug('🔒 Native adapter hook starting...', 'AuthAdapter');
|
|
253
249
|
const req = context.request;
|
|
254
|
-
logger.debug(
|
|
250
|
+
logger_1.logger.debug(`📝 Request path: ${req.path || req.url}`, 'AuthAdapter');
|
|
255
251
|
try {
|
|
256
252
|
// Just add auth object to request - don't touch response
|
|
257
253
|
req.auth = {
|
|
@@ -279,16 +275,16 @@ function createAuthMiddleware(config) {
|
|
|
279
275
|
return { url: signOutUrl };
|
|
280
276
|
},
|
|
281
277
|
};
|
|
282
|
-
logger.debug('Native adapter hook completed successfully', 'AuthAdapter');
|
|
278
|
+
logger_1.logger.debug('✅ Native adapter hook completed successfully', 'AuthAdapter');
|
|
283
279
|
}
|
|
284
280
|
catch (error) {
|
|
285
|
-
logger.error('Error in native adapter hook', 'AuthAdapter', {
|
|
281
|
+
logger_1.logger.error('❌ Error in native adapter hook:', 'AuthAdapter', {
|
|
286
282
|
error: error instanceof Error ? error.message : String(error),
|
|
287
283
|
});
|
|
288
284
|
throw error;
|
|
289
285
|
}
|
|
290
286
|
});
|
|
291
|
-
logger.info('Auth.js middleware installed successfully!', 'AuthAdapter');
|
|
287
|
+
logger_1.logger.info('✅ Auth.js middleware installed successfully!', 'AuthAdapter');
|
|
292
288
|
};
|
|
293
289
|
}
|
|
294
290
|
// Types are already exported above, no need to re-export
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"morojs-adapter.js","sourceRoot":"","sources":["../../../src/core/auth/morojs-adapter.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;
|
|
1
|
+
{"version":3,"file":"morojs-adapter.js","sourceRoot":"","sources":["../../../src/core/auth/morojs-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,3 +11,8 @@ export declare function loadConfigFileSync(cwd?: string): Partial<AppConfig> | n
|
|
|
11
11
|
* @returns Partial configuration object or null if no config file found
|
|
12
12
|
*/
|
|
13
13
|
export declare function loadConfigFile(cwd?: string): Promise<Partial<AppConfig> | null>;
|
|
14
|
+
/**
|
|
15
|
+
* Convert a configuration object to environment variable mappings
|
|
16
|
+
* This function flattens the config object and sets corresponding environment variables
|
|
17
|
+
*/
|
|
18
|
+
export declare function applyConfigAsEnvironmentVariables(config: Partial<AppConfig>): void;
|
|
@@ -35,6 +35,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.loadConfigFileSync = loadConfigFileSync;
|
|
37
37
|
exports.loadConfigFile = loadConfigFile;
|
|
38
|
+
exports.applyConfigAsEnvironmentVariables = applyConfigAsEnvironmentVariables;
|
|
38
39
|
// Configuration File Loader - Load moro.config.js/ts files
|
|
39
40
|
const fs_1 = require("fs");
|
|
40
41
|
const path_1 = require("path");
|
|
@@ -177,4 +178,174 @@ async function setupTypeScriptLoader() {
|
|
|
177
178
|
// the TypeScript transpilation is already handled by those tools.
|
|
178
179
|
logger.debug('TypeScript config loading delegated to runtime environment');
|
|
179
180
|
}
|
|
181
|
+
/**
|
|
182
|
+
* Convert a configuration object to environment variable mappings
|
|
183
|
+
* This function flattens the config object and sets corresponding environment variables
|
|
184
|
+
*/
|
|
185
|
+
function applyConfigAsEnvironmentVariables(config) {
|
|
186
|
+
if (!config || typeof config !== 'object') {
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
// Apply server configuration
|
|
190
|
+
if (config.server) {
|
|
191
|
+
setEnvIfNotSet('PORT', config.server.port?.toString());
|
|
192
|
+
setEnvIfNotSet('HOST', config.server.host);
|
|
193
|
+
setEnvIfNotSet('NODE_ENV', config.server.environment);
|
|
194
|
+
setEnvIfNotSet('MAX_CONNECTIONS', config.server.maxConnections?.toString());
|
|
195
|
+
setEnvIfNotSet('REQUEST_TIMEOUT', config.server.timeout?.toString());
|
|
196
|
+
}
|
|
197
|
+
// Apply database configuration
|
|
198
|
+
if (config.database) {
|
|
199
|
+
setEnvIfNotSet('DATABASE_URL', config.database.url);
|
|
200
|
+
if (config.database.redis) {
|
|
201
|
+
setEnvIfNotSet('REDIS_URL', config.database.redis.url);
|
|
202
|
+
setEnvIfNotSet('REDIS_MAX_RETRIES', config.database.redis.maxRetries?.toString());
|
|
203
|
+
setEnvIfNotSet('REDIS_RETRY_DELAY', config.database.redis.retryDelay?.toString());
|
|
204
|
+
setEnvIfNotSet('REDIS_KEY_PREFIX', config.database.redis.keyPrefix);
|
|
205
|
+
}
|
|
206
|
+
if (config.database.mysql) {
|
|
207
|
+
setEnvIfNotSet('MYSQL_HOST', config.database.mysql.host);
|
|
208
|
+
setEnvIfNotSet('MYSQL_PORT', config.database.mysql.port?.toString());
|
|
209
|
+
setEnvIfNotSet('MYSQL_DATABASE', config.database.mysql.database);
|
|
210
|
+
setEnvIfNotSet('MYSQL_USERNAME', config.database.mysql.username);
|
|
211
|
+
setEnvIfNotSet('MYSQL_PASSWORD', config.database.mysql.password);
|
|
212
|
+
setEnvIfNotSet('MYSQL_CONNECTION_LIMIT', config.database.mysql.connectionLimit?.toString());
|
|
213
|
+
setEnvIfNotSet('MYSQL_ACQUIRE_TIMEOUT', config.database.mysql.acquireTimeout?.toString());
|
|
214
|
+
setEnvIfNotSet('MYSQL_TIMEOUT', config.database.mysql.timeout?.toString());
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
// Apply service discovery configuration
|
|
218
|
+
if (config.serviceDiscovery) {
|
|
219
|
+
setEnvIfNotSet('SERVICE_DISCOVERY_ENABLED', config.serviceDiscovery.enabled?.toString());
|
|
220
|
+
setEnvIfNotSet('DISCOVERY_TYPE', config.serviceDiscovery.type);
|
|
221
|
+
setEnvIfNotSet('CONSUL_URL', config.serviceDiscovery.consulUrl);
|
|
222
|
+
setEnvIfNotSet('K8S_NAMESPACE', config.serviceDiscovery.kubernetesNamespace);
|
|
223
|
+
setEnvIfNotSet('HEALTH_CHECK_INTERVAL', config.serviceDiscovery.healthCheckInterval?.toString());
|
|
224
|
+
setEnvIfNotSet('DISCOVERY_RETRY_ATTEMPTS', config.serviceDiscovery.retryAttempts?.toString());
|
|
225
|
+
}
|
|
226
|
+
// Apply logging configuration
|
|
227
|
+
if (config.logging) {
|
|
228
|
+
setEnvIfNotSet('LOG_LEVEL', config.logging.level);
|
|
229
|
+
setEnvIfNotSet('LOG_FORMAT', config.logging.format);
|
|
230
|
+
setEnvIfNotSet('LOG_COLORS', config.logging.enableColors?.toString());
|
|
231
|
+
setEnvIfNotSet('LOG_TIMESTAMP', config.logging.enableTimestamp?.toString());
|
|
232
|
+
setEnvIfNotSet('LOG_CONTEXT', config.logging.enableContext?.toString());
|
|
233
|
+
if (config.logging.outputs) {
|
|
234
|
+
setEnvIfNotSet('LOG_CONSOLE', config.logging.outputs.console?.toString());
|
|
235
|
+
if (config.logging.outputs.file) {
|
|
236
|
+
setEnvIfNotSet('LOG_FILE_ENABLED', config.logging.outputs.file.enabled?.toString());
|
|
237
|
+
setEnvIfNotSet('LOG_FILE_PATH', config.logging.outputs.file.path);
|
|
238
|
+
setEnvIfNotSet('LOG_FILE_MAX_SIZE', config.logging.outputs.file.maxSize);
|
|
239
|
+
setEnvIfNotSet('LOG_FILE_MAX_FILES', config.logging.outputs.file.maxFiles?.toString());
|
|
240
|
+
}
|
|
241
|
+
if (config.logging.outputs.webhook) {
|
|
242
|
+
setEnvIfNotSet('LOG_WEBHOOK_ENABLED', config.logging.outputs.webhook.enabled?.toString());
|
|
243
|
+
setEnvIfNotSet('LOG_WEBHOOK_URL', config.logging.outputs.webhook.url);
|
|
244
|
+
if (config.logging.outputs.webhook.headers) {
|
|
245
|
+
setEnvIfNotSet('LOG_WEBHOOK_HEADERS', JSON.stringify(config.logging.outputs.webhook.headers));
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
// Apply module defaults
|
|
251
|
+
if (config.modules) {
|
|
252
|
+
if (config.modules.cache) {
|
|
253
|
+
setEnvIfNotSet('CACHE_ENABLED', config.modules.cache.enabled?.toString());
|
|
254
|
+
setEnvIfNotSet('DEFAULT_CACHE_TTL', config.modules.cache.defaultTtl?.toString());
|
|
255
|
+
setEnvIfNotSet('CACHE_MAX_SIZE', config.modules.cache.maxSize?.toString());
|
|
256
|
+
setEnvIfNotSet('CACHE_STRATEGY', config.modules.cache.strategy);
|
|
257
|
+
}
|
|
258
|
+
if (config.modules.rateLimit) {
|
|
259
|
+
setEnvIfNotSet('RATE_LIMIT_ENABLED', config.modules.rateLimit.enabled?.toString());
|
|
260
|
+
setEnvIfNotSet('DEFAULT_RATE_LIMIT_REQUESTS', config.modules.rateLimit.defaultRequests?.toString());
|
|
261
|
+
setEnvIfNotSet('DEFAULT_RATE_LIMIT_WINDOW', config.modules.rateLimit.defaultWindow?.toString());
|
|
262
|
+
setEnvIfNotSet('RATE_LIMIT_SKIP_SUCCESS', config.modules.rateLimit.skipSuccessfulRequests?.toString());
|
|
263
|
+
setEnvIfNotSet('RATE_LIMIT_SKIP_FAILED', config.modules.rateLimit.skipFailedRequests?.toString());
|
|
264
|
+
}
|
|
265
|
+
if (config.modules.validation) {
|
|
266
|
+
setEnvIfNotSet('VALIDATION_ENABLED', config.modules.validation.enabled?.toString());
|
|
267
|
+
setEnvIfNotSet('VALIDATION_STRIP_UNKNOWN', config.modules.validation.stripUnknown?.toString());
|
|
268
|
+
setEnvIfNotSet('VALIDATION_ABORT_EARLY', config.modules.validation.abortEarly?.toString());
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
// Apply security configuration
|
|
272
|
+
if (config.security) {
|
|
273
|
+
if (config.security.cors) {
|
|
274
|
+
setEnvIfNotSet('CORS_ENABLED', config.security.cors.enabled?.toString());
|
|
275
|
+
if (typeof config.security.cors.origin === 'string') {
|
|
276
|
+
setEnvIfNotSet('CORS_ORIGIN', config.security.cors.origin);
|
|
277
|
+
}
|
|
278
|
+
else if (Array.isArray(config.security.cors.origin)) {
|
|
279
|
+
setEnvIfNotSet('CORS_ORIGIN', config.security.cors.origin.join(','));
|
|
280
|
+
}
|
|
281
|
+
else if (typeof config.security.cors.origin === 'boolean') {
|
|
282
|
+
setEnvIfNotSet('CORS_ORIGIN', config.security.cors.origin.toString());
|
|
283
|
+
}
|
|
284
|
+
setEnvIfNotSet('CORS_METHODS', config.security.cors.methods?.join(','));
|
|
285
|
+
setEnvIfNotSet('CORS_HEADERS', config.security.cors.allowedHeaders?.join(','));
|
|
286
|
+
setEnvIfNotSet('CORS_CREDENTIALS', config.security.cors.credentials?.toString());
|
|
287
|
+
}
|
|
288
|
+
if (config.security.helmet) {
|
|
289
|
+
setEnvIfNotSet('HELMET_ENABLED', config.security.helmet.enabled?.toString());
|
|
290
|
+
setEnvIfNotSet('HELMET_CSP', config.security.helmet.contentSecurityPolicy?.toString());
|
|
291
|
+
setEnvIfNotSet('HELMET_HSTS', config.security.helmet.hsts?.toString());
|
|
292
|
+
setEnvIfNotSet('HELMET_NO_SNIFF', config.security.helmet.noSniff?.toString());
|
|
293
|
+
setEnvIfNotSet('HELMET_FRAMEGUARD', config.security.helmet.frameguard?.toString());
|
|
294
|
+
}
|
|
295
|
+
if (config.security.rateLimit?.global) {
|
|
296
|
+
setEnvIfNotSet('GLOBAL_RATE_LIMIT_ENABLED', config.security.rateLimit.global.enabled?.toString());
|
|
297
|
+
setEnvIfNotSet('GLOBAL_RATE_LIMIT_REQUESTS', config.security.rateLimit.global.requests?.toString());
|
|
298
|
+
setEnvIfNotSet('GLOBAL_RATE_LIMIT_WINDOW', config.security.rateLimit.global.window?.toString());
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
// Apply external services configuration
|
|
302
|
+
if (config.external) {
|
|
303
|
+
if (config.external.stripe) {
|
|
304
|
+
setEnvIfNotSet('STRIPE_SECRET_KEY', config.external.stripe.secretKey);
|
|
305
|
+
setEnvIfNotSet('STRIPE_PUBLISHABLE_KEY', config.external.stripe.publishableKey);
|
|
306
|
+
setEnvIfNotSet('STRIPE_WEBHOOK_SECRET', config.external.stripe.webhookSecret);
|
|
307
|
+
setEnvIfNotSet('STRIPE_API_VERSION', config.external.stripe.apiVersion);
|
|
308
|
+
}
|
|
309
|
+
if (config.external.paypal) {
|
|
310
|
+
setEnvIfNotSet('PAYPAL_CLIENT_ID', config.external.paypal.clientId);
|
|
311
|
+
setEnvIfNotSet('PAYPAL_CLIENT_SECRET', config.external.paypal.clientSecret);
|
|
312
|
+
setEnvIfNotSet('PAYPAL_WEBHOOK_ID', config.external.paypal.webhookId);
|
|
313
|
+
setEnvIfNotSet('PAYPAL_ENVIRONMENT', config.external.paypal.environment);
|
|
314
|
+
}
|
|
315
|
+
if (config.external.smtp) {
|
|
316
|
+
setEnvIfNotSet('SMTP_HOST', config.external.smtp.host);
|
|
317
|
+
setEnvIfNotSet('SMTP_PORT', config.external.smtp.port?.toString());
|
|
318
|
+
setEnvIfNotSet('SMTP_SECURE', config.external.smtp.secure?.toString());
|
|
319
|
+
setEnvIfNotSet('SMTP_USERNAME', config.external.smtp.username);
|
|
320
|
+
setEnvIfNotSet('SMTP_PASSWORD', config.external.smtp.password);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
// Apply performance configuration
|
|
324
|
+
if (config.performance) {
|
|
325
|
+
if (config.performance.compression) {
|
|
326
|
+
setEnvIfNotSet('COMPRESSION_ENABLED', config.performance.compression.enabled?.toString());
|
|
327
|
+
setEnvIfNotSet('COMPRESSION_LEVEL', config.performance.compression.level?.toString());
|
|
328
|
+
setEnvIfNotSet('COMPRESSION_THRESHOLD', config.performance.compression.threshold?.toString());
|
|
329
|
+
}
|
|
330
|
+
if (config.performance.circuitBreaker) {
|
|
331
|
+
setEnvIfNotSet('CIRCUIT_BREAKER_ENABLED', config.performance.circuitBreaker.enabled?.toString());
|
|
332
|
+
setEnvIfNotSet('CIRCUIT_BREAKER_THRESHOLD', config.performance.circuitBreaker.failureThreshold?.toString());
|
|
333
|
+
setEnvIfNotSet('CIRCUIT_BREAKER_RESET', config.performance.circuitBreaker.resetTimeout?.toString());
|
|
334
|
+
setEnvIfNotSet('CIRCUIT_BREAKER_MONITOR', config.performance.circuitBreaker.monitoringPeriod?.toString());
|
|
335
|
+
}
|
|
336
|
+
if (config.performance.clustering) {
|
|
337
|
+
setEnvIfNotSet('CLUSTERING_ENABLED', config.performance.clustering.enabled?.toString());
|
|
338
|
+
setEnvIfNotSet('CLUSTER_WORKERS', config.performance.clustering.workers?.toString());
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Set environment variable only if it's not already set
|
|
344
|
+
* This ensures environment variables take precedence over config file values
|
|
345
|
+
*/
|
|
346
|
+
function setEnvIfNotSet(key, value) {
|
|
347
|
+
if (value !== undefined && process.env[key] === undefined) {
|
|
348
|
+
process.env[key] = value;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
180
351
|
//# sourceMappingURL=file-loader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-loader.js","sourceRoot":"","sources":["../../../src/core/config/file-loader.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"file-loader.js","sourceRoot":"","sources":["../../../src/core/config/file-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,53 +1,24 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Configuration System - Immutable Config with createApp Override Support
|
|
3
|
-
*
|
|
4
|
-
* This is the main entry point for the MoroJS configuration system.
|
|
5
|
-
* It provides a clean, immutable configuration that is locked at createApp() time.
|
|
6
|
-
*
|
|
7
|
-
* Key Features:
|
|
8
|
-
* - Immutable configuration after initialization
|
|
9
|
-
* - Clear precedence: Env Vars > createApp Options > Config File > Defaults
|
|
10
|
-
* - Type-safe validation
|
|
11
|
-
* - Single source of truth
|
|
12
|
-
*/
|
|
13
1
|
export * from './schema';
|
|
14
|
-
export * from './
|
|
15
|
-
export * from './config-validator';
|
|
16
|
-
export * from './file-loader';
|
|
17
|
-
export { initializeAndLockConfig, isConfigLocked, resetConfigForTesting } from './config-manager';
|
|
2
|
+
export * from './loader';
|
|
18
3
|
export * from './utils';
|
|
19
|
-
|
|
20
|
-
import { AppConfig } from '
|
|
21
|
-
/**
|
|
22
|
-
* Initialize configuration system with createApp options
|
|
23
|
-
* This is the main entry point called by createApp()
|
|
24
|
-
*
|
|
25
|
-
* @param options - createApp options that can override config file and defaults
|
|
26
|
-
* @returns Immutable, validated configuration object
|
|
27
|
-
*/
|
|
28
|
-
export declare function initializeConfig(options?: MoroOptions): Readonly<AppConfig>;
|
|
29
|
-
/**
|
|
30
|
-
* Load configuration without locking (for testing and utilities)
|
|
31
|
-
* This maintains backward compatibility with existing code
|
|
32
|
-
*/
|
|
33
|
-
export declare function loadConfig(): AppConfig;
|
|
4
|
+
export * from './file-loader';
|
|
5
|
+
import type { AppConfig } from './schema';
|
|
34
6
|
/**
|
|
35
|
-
*
|
|
36
|
-
* This
|
|
7
|
+
* Initialize and load the global application configuration
|
|
8
|
+
* This should be called once at application startup
|
|
37
9
|
*/
|
|
38
|
-
export declare function
|
|
10
|
+
export declare function initializeConfig(): AppConfig;
|
|
39
11
|
/**
|
|
40
12
|
* Get the current global configuration
|
|
41
|
-
*
|
|
13
|
+
* Throws if configuration hasn't been initialized
|
|
42
14
|
*/
|
|
43
|
-
export declare function getGlobalConfig():
|
|
15
|
+
export declare function getGlobalConfig(): AppConfig;
|
|
44
16
|
/**
|
|
45
|
-
* Check if configuration has been initialized
|
|
46
|
-
* Alias for isConfigLocked() for backward compatibility
|
|
17
|
+
* Check if configuration has been initialized
|
|
47
18
|
*/
|
|
48
19
|
export declare function isConfigInitialized(): boolean;
|
|
49
20
|
/**
|
|
50
|
-
* Reset configuration state (for testing
|
|
21
|
+
* Reset the global configuration state (for testing purposes)
|
|
51
22
|
* @internal
|
|
52
23
|
*/
|
|
53
24
|
export declare function resetConfig(): void;
|