@morojs/moro 1.0.3 → 1.1.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.
package/README.md CHANGED
@@ -228,6 +228,6 @@ MIT © [Moro Framework Team](https://morojs.com)
228
228
 
229
229
  **Ready to deploy everywhere with one codebase?**
230
230
 
231
- [Get Started](./docs/GETTING_STARTED.md) • [GitHub](https://github.com/Moro-JS/moro) • [npm](https://www.npmjs.com/package/@morojs/moro)
231
+ [Get Started](./docs/GETTING_STARTED.md) • [GitHub](https://github.com/Moro-JS/moro) • [npm](https://www.npmjs.com/package/@morojs/moro) • [Discord](https://morojs.com/discord)
232
232
 
233
233
  </div>
@@ -0,0 +1,18 @@
1
+ import { AppConfig } from './schema';
2
+ /**
3
+ * Find and load configuration from moro.config.js (synchronously)
4
+ * @param cwd Current working directory to search for config files
5
+ * @returns Partial configuration object or null if no config file found
6
+ */
7
+ export declare function loadConfigFileSync(cwd?: string): Partial<AppConfig> | null;
8
+ /**
9
+ * Find and load configuration from moro.config.js or moro.config.ts (async)
10
+ * @param cwd Current working directory to search for config files
11
+ * @returns Partial configuration object or null if no config file found
12
+ */
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;
@@ -0,0 +1,345 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.loadConfigFileSync = loadConfigFileSync;
37
+ exports.loadConfigFile = loadConfigFile;
38
+ exports.applyConfigAsEnvironmentVariables = applyConfigAsEnvironmentVariables;
39
+ // Configuration File Loader - Load moro.config.js/ts files
40
+ const fs_1 = require("fs");
41
+ const path_1 = require("path");
42
+ const logger_1 = require("../logger");
43
+ const logger = (0, logger_1.createFrameworkLogger)('ConfigFile');
44
+ /**
45
+ * Supported configuration file names in order of preference
46
+ */
47
+ const CONFIG_FILES = ['moro.config.js', 'moro.config.ts'];
48
+ /**
49
+ * Find and load configuration from moro.config.js (synchronously)
50
+ * @param cwd Current working directory to search for config files
51
+ * @returns Partial configuration object or null if no config file found
52
+ */
53
+ function loadConfigFileSync(cwd = process.cwd()) {
54
+ const configFile = findConfigFile(cwd);
55
+ if (!configFile) {
56
+ logger.debug('No configuration file found');
57
+ return null;
58
+ }
59
+ // Only support .js files for synchronous loading to avoid complexity
60
+ if (!configFile.endsWith('.js')) {
61
+ logger.debug('Found config file, but only JavaScript files are supported in sync mode. Use loadConfigFile() for TypeScript support.');
62
+ return null;
63
+ }
64
+ logger.debug(`Loading configuration from: ${configFile}`);
65
+ try {
66
+ // Clear module cache to ensure fresh load
67
+ delete require.cache[require.resolve(configFile)];
68
+ const config = require(configFile);
69
+ const configData = config.default || config;
70
+ if (!configData || typeof configData !== 'object') {
71
+ logger.warn(`Configuration file ${configFile} did not export a valid configuration object`);
72
+ return null;
73
+ }
74
+ logger.info(`Configuration loaded from: ${configFile}`);
75
+ return configData;
76
+ }
77
+ catch (error) {
78
+ logger.error(`Failed to load configuration file ${configFile}:`, String(error));
79
+ logger.warn('Falling back to environment variable configuration');
80
+ return null;
81
+ }
82
+ }
83
+ /**
84
+ * Find and load configuration from moro.config.js or moro.config.ts (async)
85
+ * @param cwd Current working directory to search for config files
86
+ * @returns Partial configuration object or null if no config file found
87
+ */
88
+ async function loadConfigFile(cwd = process.cwd()) {
89
+ const configFile = findConfigFile(cwd);
90
+ if (!configFile) {
91
+ logger.debug('No configuration file found');
92
+ return null;
93
+ }
94
+ logger.debug(`Loading configuration from: ${configFile}`);
95
+ try {
96
+ const config = await importConfigFile(configFile);
97
+ if (!config || typeof config !== 'object') {
98
+ logger.warn(`Configuration file ${configFile} did not export a valid configuration object`);
99
+ return null;
100
+ }
101
+ logger.info(`Configuration loaded from: ${configFile}`);
102
+ return config;
103
+ }
104
+ catch (error) {
105
+ logger.error(`Failed to load configuration file ${configFile}:`, String(error));
106
+ logger.warn('Falling back to environment variable configuration');
107
+ return null;
108
+ }
109
+ }
110
+ /**
111
+ * Find the first existing configuration file in the given directory
112
+ */
113
+ function findConfigFile(cwd) {
114
+ for (const fileName of CONFIG_FILES) {
115
+ const filePath = (0, path_1.join)(cwd, fileName);
116
+ if ((0, fs_1.existsSync)(filePath)) {
117
+ return filePath;
118
+ }
119
+ }
120
+ return null;
121
+ }
122
+ /**
123
+ * Dynamically import a configuration file
124
+ */
125
+ async function importConfigFile(filePath) {
126
+ const isTypeScript = filePath.endsWith('.ts');
127
+ if (isTypeScript) {
128
+ // For TypeScript files, we need to handle ts-node/tsx or similar
129
+ await setupTypeScriptLoader();
130
+ }
131
+ try {
132
+ // Use dynamic import to load the configuration
133
+ const configModule = await Promise.resolve(`${filePath}`).then(s => __importStar(require(s)));
134
+ // Handle both default export and module.exports
135
+ const config = configModule.default || configModule;
136
+ return config;
137
+ }
138
+ catch (error) {
139
+ // If TypeScript loading fails, provide helpful error message
140
+ if (isTypeScript &&
141
+ error instanceof Error &&
142
+ error.message.includes('Unknown file extension')) {
143
+ throw new Error(`Failed to load TypeScript config file. Make sure you have ts-node installed: npm install --save-dev ts-node`);
144
+ }
145
+ throw error;
146
+ }
147
+ }
148
+ /**
149
+ * Setup TypeScript loader for .ts config files
150
+ */
151
+ async function setupTypeScriptLoader() {
152
+ try {
153
+ // Try to register ts-node if available
154
+ const tsNode = await Promise.resolve().then(() => __importStar(require('ts-node')));
155
+ if (!tsNode.register) {
156
+ // ts-node might already be registered
157
+ return;
158
+ }
159
+ tsNode.register({
160
+ transpileOnly: true,
161
+ compilerOptions: {
162
+ module: 'commonjs',
163
+ target: 'es2020',
164
+ moduleResolution: 'node',
165
+ allowSyntheticDefaultImports: true,
166
+ esModuleInterop: true,
167
+ },
168
+ });
169
+ }
170
+ catch (error) {
171
+ // ts-node not available, try other methods or fail gracefully
172
+ logger.debug('ts-node not available for TypeScript config loading');
173
+ }
174
+ }
175
+ /**
176
+ * Convert a configuration object to environment variable mappings
177
+ * This function flattens the config object and sets corresponding environment variables
178
+ */
179
+ function applyConfigAsEnvironmentVariables(config) {
180
+ if (!config || typeof config !== 'object') {
181
+ return;
182
+ }
183
+ // Apply server configuration
184
+ if (config.server) {
185
+ setEnvIfNotSet('PORT', config.server.port?.toString());
186
+ setEnvIfNotSet('HOST', config.server.host);
187
+ setEnvIfNotSet('NODE_ENV', config.server.environment);
188
+ setEnvIfNotSet('MAX_CONNECTIONS', config.server.maxConnections?.toString());
189
+ setEnvIfNotSet('REQUEST_TIMEOUT', config.server.timeout?.toString());
190
+ }
191
+ // Apply database configuration
192
+ if (config.database) {
193
+ setEnvIfNotSet('DATABASE_URL', config.database.url);
194
+ if (config.database.redis) {
195
+ setEnvIfNotSet('REDIS_URL', config.database.redis.url);
196
+ setEnvIfNotSet('REDIS_MAX_RETRIES', config.database.redis.maxRetries?.toString());
197
+ setEnvIfNotSet('REDIS_RETRY_DELAY', config.database.redis.retryDelay?.toString());
198
+ setEnvIfNotSet('REDIS_KEY_PREFIX', config.database.redis.keyPrefix);
199
+ }
200
+ if (config.database.mysql) {
201
+ setEnvIfNotSet('MYSQL_HOST', config.database.mysql.host);
202
+ setEnvIfNotSet('MYSQL_PORT', config.database.mysql.port?.toString());
203
+ setEnvIfNotSet('MYSQL_DATABASE', config.database.mysql.database);
204
+ setEnvIfNotSet('MYSQL_USERNAME', config.database.mysql.username);
205
+ setEnvIfNotSet('MYSQL_PASSWORD', config.database.mysql.password);
206
+ setEnvIfNotSet('MYSQL_CONNECTION_LIMIT', config.database.mysql.connectionLimit?.toString());
207
+ setEnvIfNotSet('MYSQL_ACQUIRE_TIMEOUT', config.database.mysql.acquireTimeout?.toString());
208
+ setEnvIfNotSet('MYSQL_TIMEOUT', config.database.mysql.timeout?.toString());
209
+ }
210
+ }
211
+ // Apply service discovery configuration
212
+ if (config.serviceDiscovery) {
213
+ setEnvIfNotSet('SERVICE_DISCOVERY_ENABLED', config.serviceDiscovery.enabled?.toString());
214
+ setEnvIfNotSet('DISCOVERY_TYPE', config.serviceDiscovery.type);
215
+ setEnvIfNotSet('CONSUL_URL', config.serviceDiscovery.consulUrl);
216
+ setEnvIfNotSet('K8S_NAMESPACE', config.serviceDiscovery.kubernetesNamespace);
217
+ setEnvIfNotSet('HEALTH_CHECK_INTERVAL', config.serviceDiscovery.healthCheckInterval?.toString());
218
+ setEnvIfNotSet('DISCOVERY_RETRY_ATTEMPTS', config.serviceDiscovery.retryAttempts?.toString());
219
+ }
220
+ // Apply logging configuration
221
+ if (config.logging) {
222
+ setEnvIfNotSet('LOG_LEVEL', config.logging.level);
223
+ setEnvIfNotSet('LOG_FORMAT', config.logging.format);
224
+ setEnvIfNotSet('LOG_COLORS', config.logging.enableColors?.toString());
225
+ setEnvIfNotSet('LOG_TIMESTAMP', config.logging.enableTimestamp?.toString());
226
+ setEnvIfNotSet('LOG_CONTEXT', config.logging.enableContext?.toString());
227
+ if (config.logging.outputs) {
228
+ setEnvIfNotSet('LOG_CONSOLE', config.logging.outputs.console?.toString());
229
+ if (config.logging.outputs.file) {
230
+ setEnvIfNotSet('LOG_FILE_ENABLED', config.logging.outputs.file.enabled?.toString());
231
+ setEnvIfNotSet('LOG_FILE_PATH', config.logging.outputs.file.path);
232
+ setEnvIfNotSet('LOG_FILE_MAX_SIZE', config.logging.outputs.file.maxSize);
233
+ setEnvIfNotSet('LOG_FILE_MAX_FILES', config.logging.outputs.file.maxFiles?.toString());
234
+ }
235
+ if (config.logging.outputs.webhook) {
236
+ setEnvIfNotSet('LOG_WEBHOOK_ENABLED', config.logging.outputs.webhook.enabled?.toString());
237
+ setEnvIfNotSet('LOG_WEBHOOK_URL', config.logging.outputs.webhook.url);
238
+ if (config.logging.outputs.webhook.headers) {
239
+ setEnvIfNotSet('LOG_WEBHOOK_HEADERS', JSON.stringify(config.logging.outputs.webhook.headers));
240
+ }
241
+ }
242
+ }
243
+ }
244
+ // Apply module defaults
245
+ if (config.modules) {
246
+ if (config.modules.cache) {
247
+ setEnvIfNotSet('CACHE_ENABLED', config.modules.cache.enabled?.toString());
248
+ setEnvIfNotSet('DEFAULT_CACHE_TTL', config.modules.cache.defaultTtl?.toString());
249
+ setEnvIfNotSet('CACHE_MAX_SIZE', config.modules.cache.maxSize?.toString());
250
+ setEnvIfNotSet('CACHE_STRATEGY', config.modules.cache.strategy);
251
+ }
252
+ if (config.modules.rateLimit) {
253
+ setEnvIfNotSet('RATE_LIMIT_ENABLED', config.modules.rateLimit.enabled?.toString());
254
+ setEnvIfNotSet('DEFAULT_RATE_LIMIT_REQUESTS', config.modules.rateLimit.defaultRequests?.toString());
255
+ setEnvIfNotSet('DEFAULT_RATE_LIMIT_WINDOW', config.modules.rateLimit.defaultWindow?.toString());
256
+ setEnvIfNotSet('RATE_LIMIT_SKIP_SUCCESS', config.modules.rateLimit.skipSuccessfulRequests?.toString());
257
+ setEnvIfNotSet('RATE_LIMIT_SKIP_FAILED', config.modules.rateLimit.skipFailedRequests?.toString());
258
+ }
259
+ if (config.modules.validation) {
260
+ setEnvIfNotSet('VALIDATION_ENABLED', config.modules.validation.enabled?.toString());
261
+ setEnvIfNotSet('VALIDATION_STRIP_UNKNOWN', config.modules.validation.stripUnknown?.toString());
262
+ setEnvIfNotSet('VALIDATION_ABORT_EARLY', config.modules.validation.abortEarly?.toString());
263
+ }
264
+ }
265
+ // Apply security configuration
266
+ if (config.security) {
267
+ if (config.security.cors) {
268
+ setEnvIfNotSet('CORS_ENABLED', config.security.cors.enabled?.toString());
269
+ if (typeof config.security.cors.origin === 'string') {
270
+ setEnvIfNotSet('CORS_ORIGIN', config.security.cors.origin);
271
+ }
272
+ else if (Array.isArray(config.security.cors.origin)) {
273
+ setEnvIfNotSet('CORS_ORIGIN', config.security.cors.origin.join(','));
274
+ }
275
+ else if (typeof config.security.cors.origin === 'boolean') {
276
+ setEnvIfNotSet('CORS_ORIGIN', config.security.cors.origin.toString());
277
+ }
278
+ setEnvIfNotSet('CORS_METHODS', config.security.cors.methods?.join(','));
279
+ setEnvIfNotSet('CORS_HEADERS', config.security.cors.allowedHeaders?.join(','));
280
+ setEnvIfNotSet('CORS_CREDENTIALS', config.security.cors.credentials?.toString());
281
+ }
282
+ if (config.security.helmet) {
283
+ setEnvIfNotSet('HELMET_ENABLED', config.security.helmet.enabled?.toString());
284
+ setEnvIfNotSet('HELMET_CSP', config.security.helmet.contentSecurityPolicy?.toString());
285
+ setEnvIfNotSet('HELMET_HSTS', config.security.helmet.hsts?.toString());
286
+ setEnvIfNotSet('HELMET_NO_SNIFF', config.security.helmet.noSniff?.toString());
287
+ setEnvIfNotSet('HELMET_FRAMEGUARD', config.security.helmet.frameguard?.toString());
288
+ }
289
+ if (config.security.rateLimit?.global) {
290
+ setEnvIfNotSet('GLOBAL_RATE_LIMIT_ENABLED', config.security.rateLimit.global.enabled?.toString());
291
+ setEnvIfNotSet('GLOBAL_RATE_LIMIT_REQUESTS', config.security.rateLimit.global.requests?.toString());
292
+ setEnvIfNotSet('GLOBAL_RATE_LIMIT_WINDOW', config.security.rateLimit.global.window?.toString());
293
+ }
294
+ }
295
+ // Apply external services configuration
296
+ if (config.external) {
297
+ if (config.external.stripe) {
298
+ setEnvIfNotSet('STRIPE_SECRET_KEY', config.external.stripe.secretKey);
299
+ setEnvIfNotSet('STRIPE_PUBLISHABLE_KEY', config.external.stripe.publishableKey);
300
+ setEnvIfNotSet('STRIPE_WEBHOOK_SECRET', config.external.stripe.webhookSecret);
301
+ setEnvIfNotSet('STRIPE_API_VERSION', config.external.stripe.apiVersion);
302
+ }
303
+ if (config.external.paypal) {
304
+ setEnvIfNotSet('PAYPAL_CLIENT_ID', config.external.paypal.clientId);
305
+ setEnvIfNotSet('PAYPAL_CLIENT_SECRET', config.external.paypal.clientSecret);
306
+ setEnvIfNotSet('PAYPAL_WEBHOOK_ID', config.external.paypal.webhookId);
307
+ setEnvIfNotSet('PAYPAL_ENVIRONMENT', config.external.paypal.environment);
308
+ }
309
+ if (config.external.smtp) {
310
+ setEnvIfNotSet('SMTP_HOST', config.external.smtp.host);
311
+ setEnvIfNotSet('SMTP_PORT', config.external.smtp.port?.toString());
312
+ setEnvIfNotSet('SMTP_SECURE', config.external.smtp.secure?.toString());
313
+ setEnvIfNotSet('SMTP_USERNAME', config.external.smtp.username);
314
+ setEnvIfNotSet('SMTP_PASSWORD', config.external.smtp.password);
315
+ }
316
+ }
317
+ // Apply performance configuration
318
+ if (config.performance) {
319
+ if (config.performance.compression) {
320
+ setEnvIfNotSet('COMPRESSION_ENABLED', config.performance.compression.enabled?.toString());
321
+ setEnvIfNotSet('COMPRESSION_LEVEL', config.performance.compression.level?.toString());
322
+ setEnvIfNotSet('COMPRESSION_THRESHOLD', config.performance.compression.threshold?.toString());
323
+ }
324
+ if (config.performance.circuitBreaker) {
325
+ setEnvIfNotSet('CIRCUIT_BREAKER_ENABLED', config.performance.circuitBreaker.enabled?.toString());
326
+ setEnvIfNotSet('CIRCUIT_BREAKER_THRESHOLD', config.performance.circuitBreaker.failureThreshold?.toString());
327
+ setEnvIfNotSet('CIRCUIT_BREAKER_RESET', config.performance.circuitBreaker.resetTimeout?.toString());
328
+ setEnvIfNotSet('CIRCUIT_BREAKER_MONITOR', config.performance.circuitBreaker.monitoringPeriod?.toString());
329
+ }
330
+ if (config.performance.clustering) {
331
+ setEnvIfNotSet('CLUSTERING_ENABLED', config.performance.clustering.enabled?.toString());
332
+ setEnvIfNotSet('CLUSTER_WORKERS', config.performance.clustering.workers?.toString());
333
+ }
334
+ }
335
+ }
336
+ /**
337
+ * Set environment variable only if it's not already set
338
+ * This ensures environment variables take precedence over config file values
339
+ */
340
+ function setEnvIfNotSet(key, value) {
341
+ if (value !== undefined && process.env[key] === undefined) {
342
+ process.env[key] = value;
343
+ }
344
+ }
345
+ //# sourceMappingURL=file-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-loader.js","sourceRoot":"","sources":["../../../src/core/config/file-loader.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  export * from './schema';
2
2
  export * from './loader';
3
3
  export * from './utils';
4
+ export * from './file-loader';
4
5
  export { z } from 'zod';
5
6
  import type { AppConfig } from './schema';
6
7
  /**
@@ -17,3 +18,8 @@ export declare function getGlobalConfig(): AppConfig;
17
18
  * Check if configuration has been initialized
18
19
  */
19
20
  export declare function isConfigInitialized(): boolean;
21
+ /**
22
+ * Reset the global configuration state (for testing purposes)
23
+ * @internal
24
+ */
25
+ export declare function resetConfig(): void;
@@ -18,15 +18,18 @@ exports.z = void 0;
18
18
  exports.initializeConfig = initializeConfig;
19
19
  exports.getGlobalConfig = getGlobalConfig;
20
20
  exports.isConfigInitialized = isConfigInitialized;
21
+ exports.resetConfig = resetConfig;
21
22
  // Configuration System - Main Exports and Utilities
22
23
  __exportStar(require("./schema"), exports);
23
24
  __exportStar(require("./loader"), exports);
24
25
  __exportStar(require("./utils"), exports);
26
+ __exportStar(require("./file-loader"), exports);
25
27
  // Re-export common Zod utilities for configuration
26
28
  var zod_1 = require("zod");
27
29
  Object.defineProperty(exports, "z", { enumerable: true, get: function () { return zod_1.z; } });
28
30
  // Main configuration loading function
29
31
  const loader_1 = require("./loader");
32
+ const utils_1 = require("./utils");
30
33
  // Global configuration instance
31
34
  let globalConfig = null;
32
35
  /**
@@ -38,6 +41,8 @@ function initializeConfig() {
38
41
  return globalConfig;
39
42
  }
40
43
  globalConfig = (0, loader_1.loadConfig)();
44
+ // Also set the config for utils functions
45
+ (0, utils_1.setConfig)(globalConfig);
41
46
  return globalConfig;
42
47
  }
43
48
  /**
@@ -56,4 +61,14 @@ function getGlobalConfig() {
56
61
  function isConfigInitialized() {
57
62
  return globalConfig !== null;
58
63
  }
64
+ /**
65
+ * Reset the global configuration state (for testing purposes)
66
+ * @internal
67
+ */
68
+ function resetConfig() {
69
+ globalConfig = null;
70
+ // Also reset the utils config (by setting it to null via direct access)
71
+ const { setConfig } = require('./utils');
72
+ setConfig(null);
73
+ }
59
74
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/config/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAmBA,4CAOC;AAMD,0CAKC;AAKD,kDAEC;AA5CD,oDAAoD;AACpD,2CAAyB;AACzB,2CAAyB;AACzB,0CAAwB;AAExB,mDAAmD;AACnD,2BAAwB;AAAf,wFAAA,CAAC,OAAA;AAEV,sCAAsC;AACtC,qCAAsC;AAGtC,gCAAgC;AAChC,IAAI,YAAY,GAAqB,IAAI,CAAC;AAE1C;;;GAGG;AACH,SAAgB,gBAAgB;IAC9B,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,YAAY,GAAG,IAAA,mBAAU,GAAE,CAAC;IAC5B,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;GAGG;AACH,SAAgB,eAAe;IAC7B,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB;IACjC,OAAO,YAAY,KAAK,IAAI,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/config/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAqBA,4CAWC;AAMD,0CAKC;AAKD,kDAEC;AAMD,kCAMC;AA9DD,oDAAoD;AACpD,2CAAyB;AACzB,2CAAyB;AACzB,0CAAwB;AACxB,gDAA8B;AAE9B,mDAAmD;AACnD,2BAAwB;AAAf,wFAAA,CAAC,OAAA;AAEV,sCAAsC;AACtC,qCAAsC;AAEtC,mCAAoC;AAEpC,gCAAgC;AAChC,IAAI,YAAY,GAAqB,IAAI,CAAC;AAE1C;;;GAGG;AACH,SAAgB,gBAAgB;IAC9B,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,YAAY,GAAG,IAAA,mBAAU,GAAE,CAAC;IAE5B,0CAA0C;IAC1C,IAAA,iBAAS,EAAC,YAAY,CAAC,CAAC;IAExB,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;GAGG;AACH,SAAgB,eAAe;IAC7B,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB;IACjC,OAAO,YAAY,KAAK,IAAI,CAAC;AAC/B,CAAC;AAED;;;GAGG;AACH,SAAgB,WAAW;IACzB,YAAY,GAAG,IAAI,CAAC;IAEpB,wEAAwE;IACxE,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACzC,SAAS,CAAC,IAAW,CAAC,CAAC;AACzB,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { AppConfig } from './schema';
2
2
  /**
3
- * Load and validate configuration from environment variables
3
+ * Load and validate configuration from config files and environment variables
4
+ * Priority: Environment Variables > Config File > Schema Defaults
4
5
  * @returns Validated and typed application configuration
5
6
  */
6
7
  export declare function loadConfig(): AppConfig;
@@ -5,13 +5,26 @@ exports.loadConfig = loadConfig;
5
5
  const zod_1 = require("zod");
6
6
  const schema_1 = require("./schema");
7
7
  const logger_1 = require("../logger");
8
+ const file_loader_1 = require("./file-loader");
8
9
  const logger = (0, logger_1.createFrameworkLogger)('Config');
9
10
  /**
10
- * Load and validate configuration from environment variables
11
+ * Load and validate configuration from config files and environment variables
12
+ * Priority: Environment Variables > Config File > Schema Defaults
11
13
  * @returns Validated and typed application configuration
12
14
  */
13
15
  function loadConfig() {
14
- logger.debug('Loading configuration from environment variables');
16
+ logger.debug('Loading configuration from config files and environment variables');
17
+ // First, try to load from config file and apply as environment variables (synchronously)
18
+ try {
19
+ const fileConfig = (0, file_loader_1.loadConfigFileSync)();
20
+ if (fileConfig) {
21
+ logger.debug('Applying config file values as environment variables');
22
+ (0, file_loader_1.applyConfigAsEnvironmentVariables)(fileConfig);
23
+ }
24
+ }
25
+ catch (error) {
26
+ logger.warn('Config file loading failed, continuing with environment variables only:', String(error));
27
+ }
15
28
  // Map environment variables to configuration structure
16
29
  const envConfig = {
17
30
  server: {
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/core/config/loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/core/config/loader.ts"],"names":[],"mappings":"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"}
@@ -32,12 +32,53 @@ function getConfig() {
32
32
  }
33
33
  return appConfig;
34
34
  }
35
+ /**
36
+ * Coerce environment variable string values to appropriate types
37
+ */
38
+ function coerceEnvironmentValue(value) {
39
+ // Handle boolean values
40
+ if (value.toLowerCase() === 'true')
41
+ return true;
42
+ if (value.toLowerCase() === 'false')
43
+ return false;
44
+ // Handle numeric values
45
+ if (/^\d+$/.test(value)) {
46
+ const num = parseInt(value, 10);
47
+ return num;
48
+ }
49
+ if (/^\d+\.\d+$/.test(value)) {
50
+ const num = parseFloat(value);
51
+ return num;
52
+ }
53
+ // Handle JSON objects/arrays
54
+ if ((value.startsWith('{') && value.endsWith('}')) ||
55
+ (value.startsWith('[') && value.endsWith(']'))) {
56
+ try {
57
+ return JSON.parse(value);
58
+ }
59
+ catch {
60
+ // If JSON parsing fails, return as string
61
+ return value;
62
+ }
63
+ }
64
+ // Return as string for all other cases
65
+ return value;
66
+ }
35
67
  /**
36
68
  * Create module-specific configuration with environment override support
37
69
  */
38
70
  function createModuleConfig(schema, defaultConfig, envPrefix) {
39
- const globalConfig = getConfig();
40
- // Build environment configuration object
71
+ // Try to get global config, but don't fail if not initialized
72
+ let globalConfig = {};
73
+ try {
74
+ const { getGlobalConfig } = require('./index');
75
+ globalConfig = getGlobalConfig();
76
+ }
77
+ catch {
78
+ // Global config not initialized - use empty object (module config can still work independently)
79
+ globalConfig = {};
80
+ }
81
+ // Build environment configuration object with type coercion
41
82
  const envConfig = {};
42
83
  if (envPrefix) {
43
84
  // Extract environment variables with the given prefix
@@ -47,13 +88,19 @@ function createModuleConfig(schema, defaultConfig, envPrefix) {
47
88
  .substring(envPrefix.length)
48
89
  .toLowerCase()
49
90
  .replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());
50
- envConfig[configKey] = process.env[key];
91
+ const envValue = process.env[key];
92
+ if (envValue !== undefined) {
93
+ // Attempt basic type coercion for common types
94
+ envConfig[configKey] = coerceEnvironmentValue(envValue);
95
+ }
51
96
  }
52
97
  });
53
98
  }
54
99
  // Merge default config, global defaults, and environment overrides
100
+ // Priority: environment variables > global config > default config
55
101
  const mergedConfig = {
56
102
  ...defaultConfig,
103
+ ...globalConfig, // Now actually using global config!
57
104
  ...envConfig,
58
105
  };
59
106
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/core/config/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/core/config/utils.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -21,7 +21,8 @@ export type { RouteBuilder, RouteSchema, CompiledRoute, HttpMethod, AuthConfig,
21
21
  export { DocumentationSystem, AppDocumentationManager, createDocumentationSystem, generateDocsFromIntelligentRoutes, } from './core/docs';
22
22
  export type { DocsConfig } from './core/docs';
23
23
  export { getConfig, createModuleConfig, getEnvVar, getEnvArray, getEnvJson, isDevelopment, isProduction, isStaging, requireEnvVars, envVar, getConfigValue, } from './core/config/utils';
24
- export { initializeConfig, getGlobalConfig, isConfigInitialized } from './core/config';
24
+ export { initializeConfig, getGlobalConfig, isConfigInitialized, resetConfig } from './core/config';
25
+ export type { AppConfig } from './core/config';
25
26
  export { MiddlewareManager } from './core/middleware';
26
27
  export type { MiddlewareInterface, MoroMiddleware } from './core/middleware';
27
28
  export type * from './types/core';
package/dist/index.js CHANGED
@@ -15,7 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.EXECUTION_PHASES = exports.defineRoute = exports.createRoute = exports.autoDiscoverModuleDirectories = exports.ModuleDiscovery = exports.ModuleLoader = exports.defineModule = exports.z = exports.combineSchemas = exports.params = exports.query = exports.body = exports.validate = exports.logger = exports.createFrameworkLogger = exports.MoroEventBus = exports.middleware = exports.HOOK_EVENTS = exports.HookManager = exports.CircuitBreaker = exports.withTimeout = exports.withRetry = exports.withCaching = exports.withLogging = exports.ServiceLifecycle = exports.ServiceScope = exports.FunctionalContainer = exports.Container = exports.ServiceRegistry = exports.WebSocketManager = exports.simpleMiddleware = exports.builtInMiddleware = exports.httpMiddleware = exports.MoroHttpServer = exports.createWorkerHandler = exports.createLambdaHandler = exports.createEdgeHandler = exports.createNodeHandler = exports.createRuntimeAdapter = exports.CloudflareWorkersAdapter = exports.AWSLambdaAdapter = exports.VercelEdgeAdapter = exports.NodeRuntimeAdapter = exports.createAppWorker = exports.createAppLambda = exports.createAppEdge = exports.createAppNode = exports.createApp = exports.MoroCore = exports.Moro = void 0;
18
- exports.MiddlewareManager = exports.isConfigInitialized = exports.getGlobalConfig = exports.initializeConfig = exports.getConfigValue = exports.envVar = exports.requireEnvVars = exports.isStaging = exports.isProduction = exports.isDevelopment = exports.getEnvJson = exports.getEnvArray = exports.getEnvVar = exports.createModuleConfig = exports.getConfig = exports.generateDocsFromIntelligentRoutes = exports.createDocumentationSystem = exports.AppDocumentationManager = exports.DocumentationSystem = exports.RouteRegistry = exports.IntelligentRoutingManager = void 0;
18
+ exports.MiddlewareManager = exports.resetConfig = exports.isConfigInitialized = exports.getGlobalConfig = exports.initializeConfig = exports.getConfigValue = exports.envVar = exports.requireEnvVars = exports.isStaging = exports.isProduction = exports.isDevelopment = exports.getEnvJson = exports.getEnvArray = exports.getEnvVar = exports.createModuleConfig = exports.getConfig = exports.generateDocsFromIntelligentRoutes = exports.createDocumentationSystem = exports.AppDocumentationManager = exports.DocumentationSystem = exports.RouteRegistry = exports.IntelligentRoutingManager = void 0;
19
19
  // MoroJS Framework - Main Entry Point
20
20
  var moro_1 = require("./moro");
21
21
  Object.defineProperty(exports, "Moro", { enumerable: true, get: function () { return moro_1.Moro; } });
@@ -112,6 +112,7 @@ var config_1 = require("./core/config");
112
112
  Object.defineProperty(exports, "initializeConfig", { enumerable: true, get: function () { return config_1.initializeConfig; } });
113
113
  Object.defineProperty(exports, "getGlobalConfig", { enumerable: true, get: function () { return config_1.getGlobalConfig; } });
114
114
  Object.defineProperty(exports, "isConfigInitialized", { enumerable: true, get: function () { return config_1.isConfigInitialized; } });
115
+ Object.defineProperty(exports, "resetConfig", { enumerable: true, get: function () { return config_1.resetConfig; } });
115
116
  // Middleware System
116
117
  var middleware_1 = require("./core/middleware");
117
118
  Object.defineProperty(exports, "MiddlewareManager", { enumerable: true, get: function () { return middleware_1.MiddlewareManager; } });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,sCAAsC;AACtC,+BAQgB;AAPd,4FAAA,IAAI,OAAA;AACJ,gGAAA,IAAI,OAAY;AAChB,iGAAA,SAAS,OAAA;AACT,qGAAA,aAAa,OAAA;AACb,qGAAA,aAAa,OAAA;AACb,uGAAA,eAAe,OAAA;AACf,uGAAA,eAAe,OAAA;AAajB,0CAUwB;AATtB,6GAAA,kBAAkB,OAAA;AAClB,4GAAA,iBAAiB,OAAA;AACjB,2GAAA,gBAAgB,OAAA;AAChB,mHAAA,wBAAwB,OAAA;AACxB,+GAAA,oBAAoB,OAAA;AACpB,4GAAA,iBAAiB,OAAA;AACjB,4GAAA,iBAAiB,OAAA;AACjB,8GAAA,mBAAmB,OAAA;AACnB,8GAAA,mBAAmB,OAAA;AAOrB,eAAe;AACf,oCAA2E;AAAlE,sGAAA,cAAc,OAAA;AAAE,sGAAA,UAAU,OAAkB;AACrD,uDAAiF;AAAxE,6GAAA,iBAAiB,OAAA;AAAE,4GAAA,gBAAgB,OAAA;AAE5C,oBAAoB;AACpB,gDAK2B;AAJzB,8GAAA,gBAAgB,OAAA;AAChB,6GAAA,eAAe,OAAA;AAKjB,iCAAiC;AACjC,8CAa0B;AAZxB,sGAAA,SAAS,OAAA;AACT,gHAAA,mBAAmB,OAAA;AACnB,yGAAA,YAAY,OAAA;AACZ,6GAAA,gBAAgB,OAAA;AAChB,wGAAA,WAAW,OAAA;AACX,wGAAA,WAAW,OAAA;AACX,sGAAA,SAAS,OAAA;AACT,wGAAA,WAAW,OAAA;AACX,2GAAA,cAAc,OAAA;AACd,wGAAA,WAAW,OAAA;AACX,wGAAA,WAAW,OAAA;AACX,uGAAA,UAAU,OAAA;AAGZ,eAAe;AACf,wCAA6C;AAApC,sGAAA,YAAY,OAAA;AAYrB,gBAAgB;AAChB,wCAA8D;AAArD,+GAAA,qBAAqB,OAAA;AAAE,gGAAA,MAAM,OAAA;AAEtC,gCAAgC;AAChC,gDAAqF;AAA5E,sGAAA,QAAQ,OAAA;AAAE,kGAAA,IAAI,OAAA;AAAE,mGAAA,KAAK,OAAA;AAAE,oGAAA,MAAM,OAAA;AAAE,4GAAA,cAAc,OAAA;AAAE,+FAAA,CAAC,OAAA;AAQzD,gBAAgB;AAChB,0CAKwB;AAJtB,uGAAA,YAAY,OAAA;AACZ,uGAAA,YAAY,OAAA;AACZ,0GAAA,eAAe,OAAA;AACf,wHAAA,6BAA6B,OAAA;AAI/B,6BAA6B;AAC7B,0CAA4E;AAAnE,sGAAA,WAAW,OAAA;AAAE,sGAAA,WAAW,OAAA;AAAE,2GAAA,gBAAgB,OAAA;AACnD,kEAA0F;AAAjF,4HAAA,yBAAyB,OAAA;AAAE,gHAAA,aAAa,OAAA;AAajD,uBAAuB;AACvB,oCAKqB;AAJnB,2GAAA,mBAAmB,OAAA;AACnB,+GAAA,uBAAuB,OAAA;AACvB,iHAAA,yBAAyB,OAAA;AACzB,yHAAA,iCAAiC,OAAA;AAInC,0BAA0B;AAC1B,6CAY6B;AAX3B,kGAAA,SAAS,OAAA;AACT,2GAAA,kBAAkB,OAAA;AAClB,kGAAA,SAAS,OAAA;AACT,oGAAA,WAAW,OAAA;AACX,mGAAA,UAAU,OAAA;AACV,sGAAA,aAAa,OAAA;AACb,qGAAA,YAAY,OAAA;AACZ,kGAAA,SAAS,OAAA;AACT,uGAAA,cAAc,OAAA;AACd,+FAAA,MAAM,OAAA;AACN,uGAAA,cAAc,OAAA;AAGhB,wCAAuF;AAA9E,0GAAA,gBAAgB,OAAA;AAAE,yGAAA,eAAe,OAAA;AAAE,6GAAA,mBAAmB,OAAA;AAE/D,oBAAoB;AACpB,gDAAsD;AAA7C,+GAAA,iBAAiB,OAAA;AAc1B,WAAW;AACX,sEAAoD;AACpD,2DAAyC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,sCAAsC;AACtC,+BAQgB;AAPd,4FAAA,IAAI,OAAA;AACJ,gGAAA,IAAI,OAAY;AAChB,iGAAA,SAAS,OAAA;AACT,qGAAA,aAAa,OAAA;AACb,qGAAA,aAAa,OAAA;AACb,uGAAA,eAAe,OAAA;AACf,uGAAA,eAAe,OAAA;AAajB,0CAUwB;AATtB,6GAAA,kBAAkB,OAAA;AAClB,4GAAA,iBAAiB,OAAA;AACjB,2GAAA,gBAAgB,OAAA;AAChB,mHAAA,wBAAwB,OAAA;AACxB,+GAAA,oBAAoB,OAAA;AACpB,4GAAA,iBAAiB,OAAA;AACjB,4GAAA,iBAAiB,OAAA;AACjB,8GAAA,mBAAmB,OAAA;AACnB,8GAAA,mBAAmB,OAAA;AAOrB,eAAe;AACf,oCAA2E;AAAlE,sGAAA,cAAc,OAAA;AAAE,sGAAA,UAAU,OAAkB;AACrD,uDAAiF;AAAxE,6GAAA,iBAAiB,OAAA;AAAE,4GAAA,gBAAgB,OAAA;AAE5C,oBAAoB;AACpB,gDAK2B;AAJzB,8GAAA,gBAAgB,OAAA;AAChB,6GAAA,eAAe,OAAA;AAKjB,iCAAiC;AACjC,8CAa0B;AAZxB,sGAAA,SAAS,OAAA;AACT,gHAAA,mBAAmB,OAAA;AACnB,yGAAA,YAAY,OAAA;AACZ,6GAAA,gBAAgB,OAAA;AAChB,wGAAA,WAAW,OAAA;AACX,wGAAA,WAAW,OAAA;AACX,sGAAA,SAAS,OAAA;AACT,wGAAA,WAAW,OAAA;AACX,2GAAA,cAAc,OAAA;AACd,wGAAA,WAAW,OAAA;AACX,wGAAA,WAAW,OAAA;AACX,uGAAA,UAAU,OAAA;AAGZ,eAAe;AACf,wCAA6C;AAApC,sGAAA,YAAY,OAAA;AAYrB,gBAAgB;AAChB,wCAA8D;AAArD,+GAAA,qBAAqB,OAAA;AAAE,gGAAA,MAAM,OAAA;AAEtC,gCAAgC;AAChC,gDAAqF;AAA5E,sGAAA,QAAQ,OAAA;AAAE,kGAAA,IAAI,OAAA;AAAE,mGAAA,KAAK,OAAA;AAAE,oGAAA,MAAM,OAAA;AAAE,4GAAA,cAAc,OAAA;AAAE,+FAAA,CAAC,OAAA;AAQzD,gBAAgB;AAChB,0CAKwB;AAJtB,uGAAA,YAAY,OAAA;AACZ,uGAAA,YAAY,OAAA;AACZ,0GAAA,eAAe,OAAA;AACf,wHAAA,6BAA6B,OAAA;AAI/B,6BAA6B;AAC7B,0CAA4E;AAAnE,sGAAA,WAAW,OAAA;AAAE,sGAAA,WAAW,OAAA;AAAE,2GAAA,gBAAgB,OAAA;AACnD,kEAA0F;AAAjF,4HAAA,yBAAyB,OAAA;AAAE,gHAAA,aAAa,OAAA;AAajD,uBAAuB;AACvB,oCAKqB;AAJnB,2GAAA,mBAAmB,OAAA;AACnB,+GAAA,uBAAuB,OAAA;AACvB,iHAAA,yBAAyB,OAAA;AACzB,yHAAA,iCAAiC,OAAA;AAInC,0BAA0B;AAC1B,6CAY6B;AAX3B,kGAAA,SAAS,OAAA;AACT,2GAAA,kBAAkB,OAAA;AAClB,kGAAA,SAAS,OAAA;AACT,oGAAA,WAAW,OAAA;AACX,mGAAA,UAAU,OAAA;AACV,sGAAA,aAAa,OAAA;AACb,qGAAA,YAAY,OAAA;AACZ,kGAAA,SAAS,OAAA;AACT,uGAAA,cAAc,OAAA;AACd,+FAAA,MAAM,OAAA;AACN,uGAAA,cAAc,OAAA;AAGhB,wCAAoG;AAA3F,0GAAA,gBAAgB,OAAA;AAAE,yGAAA,eAAe,OAAA;AAAE,6GAAA,mBAAmB,OAAA;AAAE,qGAAA,WAAW,OAAA;AAK5E,oBAAoB;AACpB,gDAAsD;AAA7C,+GAAA,iBAAiB,OAAA;AAc1B,WAAW;AACX,sEAAoD;AACpD,2DAAyC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@morojs/moro",
3
- "version": "1.0.3",
3
+ "version": "1.1.0",
4
4
  "description": "High-performance Node.js framework with intelligent routing, automatic middleware ordering, type-safe Zod validation, and functional architecture",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -0,0 +1,398 @@
1
+ // Configuration File Loader - Load moro.config.js/ts files
2
+ import { existsSync } from 'fs';
3
+ import { join } from 'path';
4
+ import { AppConfig } from './schema';
5
+ import { createFrameworkLogger } from '../logger';
6
+
7
+ const logger = createFrameworkLogger('ConfigFile');
8
+
9
+ /**
10
+ * Supported configuration file names in order of preference
11
+ */
12
+ const CONFIG_FILES = ['moro.config.js', 'moro.config.ts'] as const;
13
+
14
+ /**
15
+ * Find and load configuration from moro.config.js (synchronously)
16
+ * @param cwd Current working directory to search for config files
17
+ * @returns Partial configuration object or null if no config file found
18
+ */
19
+ export function loadConfigFileSync(cwd: string = process.cwd()): Partial<AppConfig> | null {
20
+ const configFile = findConfigFile(cwd);
21
+
22
+ if (!configFile) {
23
+ logger.debug('No configuration file found');
24
+ return null;
25
+ }
26
+
27
+ // Only support .js files for synchronous loading to avoid complexity
28
+ if (!configFile.endsWith('.js')) {
29
+ logger.debug(
30
+ 'Found config file, but only JavaScript files are supported in sync mode. Use loadConfigFile() for TypeScript support.'
31
+ );
32
+ return null;
33
+ }
34
+
35
+ logger.debug(`Loading configuration from: ${configFile}`);
36
+
37
+ try {
38
+ // Clear module cache to ensure fresh load
39
+ delete require.cache[require.resolve(configFile)];
40
+
41
+ const config = require(configFile);
42
+ const configData = config.default || config;
43
+
44
+ if (!configData || typeof configData !== 'object') {
45
+ logger.warn(`Configuration file ${configFile} did not export a valid configuration object`);
46
+ return null;
47
+ }
48
+
49
+ logger.info(`Configuration loaded from: ${configFile}`);
50
+ return configData;
51
+ } catch (error) {
52
+ logger.error(`Failed to load configuration file ${configFile}:`, String(error));
53
+ logger.warn('Falling back to environment variable configuration');
54
+ return null;
55
+ }
56
+ }
57
+
58
+ /**
59
+ * Find and load configuration from moro.config.js or moro.config.ts (async)
60
+ * @param cwd Current working directory to search for config files
61
+ * @returns Partial configuration object or null if no config file found
62
+ */
63
+ export async function loadConfigFile(
64
+ cwd: string = process.cwd()
65
+ ): Promise<Partial<AppConfig> | null> {
66
+ const configFile = findConfigFile(cwd);
67
+
68
+ if (!configFile) {
69
+ logger.debug('No configuration file found');
70
+ return null;
71
+ }
72
+
73
+ logger.debug(`Loading configuration from: ${configFile}`);
74
+
75
+ try {
76
+ const config = await importConfigFile(configFile);
77
+
78
+ if (!config || typeof config !== 'object') {
79
+ logger.warn(`Configuration file ${configFile} did not export a valid configuration object`);
80
+ return null;
81
+ }
82
+
83
+ logger.info(`Configuration loaded from: ${configFile}`);
84
+ return config;
85
+ } catch (error) {
86
+ logger.error(`Failed to load configuration file ${configFile}:`, String(error));
87
+ logger.warn('Falling back to environment variable configuration');
88
+ return null;
89
+ }
90
+ }
91
+
92
+ /**
93
+ * Find the first existing configuration file in the given directory
94
+ */
95
+ function findConfigFile(cwd: string): string | null {
96
+ for (const fileName of CONFIG_FILES) {
97
+ const filePath = join(cwd, fileName);
98
+ if (existsSync(filePath)) {
99
+ return filePath;
100
+ }
101
+ }
102
+ return null;
103
+ }
104
+
105
+ /**
106
+ * Dynamically import a configuration file
107
+ */
108
+ async function importConfigFile(filePath: string): Promise<Partial<AppConfig> | null> {
109
+ const isTypeScript = filePath.endsWith('.ts');
110
+
111
+ if (isTypeScript) {
112
+ // For TypeScript files, we need to handle ts-node/tsx or similar
113
+ await setupTypeScriptLoader();
114
+ }
115
+
116
+ try {
117
+ // Use dynamic import to load the configuration
118
+ const configModule = await import(filePath);
119
+
120
+ // Handle both default export and module.exports
121
+ const config = configModule.default || configModule;
122
+
123
+ return config;
124
+ } catch (error) {
125
+ // If TypeScript loading fails, provide helpful error message
126
+ if (
127
+ isTypeScript &&
128
+ error instanceof Error &&
129
+ error.message.includes('Unknown file extension')
130
+ ) {
131
+ throw new Error(
132
+ `Failed to load TypeScript config file. Make sure you have ts-node installed: npm install --save-dev ts-node`
133
+ );
134
+ }
135
+ throw error;
136
+ }
137
+ }
138
+
139
+ /**
140
+ * Setup TypeScript loader for .ts config files
141
+ */
142
+ async function setupTypeScriptLoader(): Promise<void> {
143
+ try {
144
+ // Try to register ts-node if available
145
+ const tsNode = await import('ts-node');
146
+ if (!tsNode.register) {
147
+ // ts-node might already be registered
148
+ return;
149
+ }
150
+
151
+ tsNode.register({
152
+ transpileOnly: true,
153
+ compilerOptions: {
154
+ module: 'commonjs',
155
+ target: 'es2020',
156
+ moduleResolution: 'node',
157
+ allowSyntheticDefaultImports: true,
158
+ esModuleInterop: true,
159
+ },
160
+ });
161
+ } catch (error) {
162
+ // ts-node not available, try other methods or fail gracefully
163
+ logger.debug('ts-node not available for TypeScript config loading');
164
+ }
165
+ }
166
+
167
+ /**
168
+ * Convert a configuration object to environment variable mappings
169
+ * This function flattens the config object and sets corresponding environment variables
170
+ */
171
+ export function applyConfigAsEnvironmentVariables(config: Partial<AppConfig>): void {
172
+ if (!config || typeof config !== 'object') {
173
+ return;
174
+ }
175
+
176
+ // Apply server configuration
177
+ if (config.server) {
178
+ setEnvIfNotSet('PORT', config.server.port?.toString());
179
+ setEnvIfNotSet('HOST', config.server.host);
180
+ setEnvIfNotSet('NODE_ENV', config.server.environment);
181
+ setEnvIfNotSet('MAX_CONNECTIONS', config.server.maxConnections?.toString());
182
+ setEnvIfNotSet('REQUEST_TIMEOUT', config.server.timeout?.toString());
183
+ }
184
+
185
+ // Apply database configuration
186
+ if (config.database) {
187
+ setEnvIfNotSet('DATABASE_URL', config.database.url);
188
+
189
+ if (config.database.redis) {
190
+ setEnvIfNotSet('REDIS_URL', config.database.redis.url);
191
+ setEnvIfNotSet('REDIS_MAX_RETRIES', config.database.redis.maxRetries?.toString());
192
+ setEnvIfNotSet('REDIS_RETRY_DELAY', config.database.redis.retryDelay?.toString());
193
+ setEnvIfNotSet('REDIS_KEY_PREFIX', config.database.redis.keyPrefix);
194
+ }
195
+
196
+ if (config.database.mysql) {
197
+ setEnvIfNotSet('MYSQL_HOST', config.database.mysql.host);
198
+ setEnvIfNotSet('MYSQL_PORT', config.database.mysql.port?.toString());
199
+ setEnvIfNotSet('MYSQL_DATABASE', config.database.mysql.database);
200
+ setEnvIfNotSet('MYSQL_USERNAME', config.database.mysql.username);
201
+ setEnvIfNotSet('MYSQL_PASSWORD', config.database.mysql.password);
202
+ setEnvIfNotSet('MYSQL_CONNECTION_LIMIT', config.database.mysql.connectionLimit?.toString());
203
+ setEnvIfNotSet('MYSQL_ACQUIRE_TIMEOUT', config.database.mysql.acquireTimeout?.toString());
204
+ setEnvIfNotSet('MYSQL_TIMEOUT', config.database.mysql.timeout?.toString());
205
+ }
206
+ }
207
+
208
+ // Apply service discovery configuration
209
+ if (config.serviceDiscovery) {
210
+ setEnvIfNotSet('SERVICE_DISCOVERY_ENABLED', config.serviceDiscovery.enabled?.toString());
211
+ setEnvIfNotSet('DISCOVERY_TYPE', config.serviceDiscovery.type);
212
+ setEnvIfNotSet('CONSUL_URL', config.serviceDiscovery.consulUrl);
213
+ setEnvIfNotSet('K8S_NAMESPACE', config.serviceDiscovery.kubernetesNamespace);
214
+ setEnvIfNotSet(
215
+ 'HEALTH_CHECK_INTERVAL',
216
+ config.serviceDiscovery.healthCheckInterval?.toString()
217
+ );
218
+ setEnvIfNotSet('DISCOVERY_RETRY_ATTEMPTS', config.serviceDiscovery.retryAttempts?.toString());
219
+ }
220
+
221
+ // Apply logging configuration
222
+ if (config.logging) {
223
+ setEnvIfNotSet('LOG_LEVEL', config.logging.level);
224
+ setEnvIfNotSet('LOG_FORMAT', config.logging.format);
225
+ setEnvIfNotSet('LOG_COLORS', config.logging.enableColors?.toString());
226
+ setEnvIfNotSet('LOG_TIMESTAMP', config.logging.enableTimestamp?.toString());
227
+ setEnvIfNotSet('LOG_CONTEXT', config.logging.enableContext?.toString());
228
+
229
+ if (config.logging.outputs) {
230
+ setEnvIfNotSet('LOG_CONSOLE', config.logging.outputs.console?.toString());
231
+
232
+ if (config.logging.outputs.file) {
233
+ setEnvIfNotSet('LOG_FILE_ENABLED', config.logging.outputs.file.enabled?.toString());
234
+ setEnvIfNotSet('LOG_FILE_PATH', config.logging.outputs.file.path);
235
+ setEnvIfNotSet('LOG_FILE_MAX_SIZE', config.logging.outputs.file.maxSize);
236
+ setEnvIfNotSet('LOG_FILE_MAX_FILES', config.logging.outputs.file.maxFiles?.toString());
237
+ }
238
+
239
+ if (config.logging.outputs.webhook) {
240
+ setEnvIfNotSet('LOG_WEBHOOK_ENABLED', config.logging.outputs.webhook.enabled?.toString());
241
+ setEnvIfNotSet('LOG_WEBHOOK_URL', config.logging.outputs.webhook.url);
242
+ if (config.logging.outputs.webhook.headers) {
243
+ setEnvIfNotSet(
244
+ 'LOG_WEBHOOK_HEADERS',
245
+ JSON.stringify(config.logging.outputs.webhook.headers)
246
+ );
247
+ }
248
+ }
249
+ }
250
+ }
251
+
252
+ // Apply module defaults
253
+ if (config.modules) {
254
+ if (config.modules.cache) {
255
+ setEnvIfNotSet('CACHE_ENABLED', config.modules.cache.enabled?.toString());
256
+ setEnvIfNotSet('DEFAULT_CACHE_TTL', config.modules.cache.defaultTtl?.toString());
257
+ setEnvIfNotSet('CACHE_MAX_SIZE', config.modules.cache.maxSize?.toString());
258
+ setEnvIfNotSet('CACHE_STRATEGY', config.modules.cache.strategy);
259
+ }
260
+
261
+ if (config.modules.rateLimit) {
262
+ setEnvIfNotSet('RATE_LIMIT_ENABLED', config.modules.rateLimit.enabled?.toString());
263
+ setEnvIfNotSet(
264
+ 'DEFAULT_RATE_LIMIT_REQUESTS',
265
+ config.modules.rateLimit.defaultRequests?.toString()
266
+ );
267
+ setEnvIfNotSet(
268
+ 'DEFAULT_RATE_LIMIT_WINDOW',
269
+ config.modules.rateLimit.defaultWindow?.toString()
270
+ );
271
+ setEnvIfNotSet(
272
+ 'RATE_LIMIT_SKIP_SUCCESS',
273
+ config.modules.rateLimit.skipSuccessfulRequests?.toString()
274
+ );
275
+ setEnvIfNotSet(
276
+ 'RATE_LIMIT_SKIP_FAILED',
277
+ config.modules.rateLimit.skipFailedRequests?.toString()
278
+ );
279
+ }
280
+
281
+ if (config.modules.validation) {
282
+ setEnvIfNotSet('VALIDATION_ENABLED', config.modules.validation.enabled?.toString());
283
+ setEnvIfNotSet(
284
+ 'VALIDATION_STRIP_UNKNOWN',
285
+ config.modules.validation.stripUnknown?.toString()
286
+ );
287
+ setEnvIfNotSet('VALIDATION_ABORT_EARLY', config.modules.validation.abortEarly?.toString());
288
+ }
289
+ }
290
+
291
+ // Apply security configuration
292
+ if (config.security) {
293
+ if (config.security.cors) {
294
+ setEnvIfNotSet('CORS_ENABLED', config.security.cors.enabled?.toString());
295
+ if (typeof config.security.cors.origin === 'string') {
296
+ setEnvIfNotSet('CORS_ORIGIN', config.security.cors.origin);
297
+ } else if (Array.isArray(config.security.cors.origin)) {
298
+ setEnvIfNotSet('CORS_ORIGIN', config.security.cors.origin.join(','));
299
+ } else if (typeof config.security.cors.origin === 'boolean') {
300
+ setEnvIfNotSet('CORS_ORIGIN', config.security.cors.origin.toString());
301
+ }
302
+ setEnvIfNotSet('CORS_METHODS', config.security.cors.methods?.join(','));
303
+ setEnvIfNotSet('CORS_HEADERS', config.security.cors.allowedHeaders?.join(','));
304
+ setEnvIfNotSet('CORS_CREDENTIALS', config.security.cors.credentials?.toString());
305
+ }
306
+
307
+ if (config.security.helmet) {
308
+ setEnvIfNotSet('HELMET_ENABLED', config.security.helmet.enabled?.toString());
309
+ setEnvIfNotSet('HELMET_CSP', config.security.helmet.contentSecurityPolicy?.toString());
310
+ setEnvIfNotSet('HELMET_HSTS', config.security.helmet.hsts?.toString());
311
+ setEnvIfNotSet('HELMET_NO_SNIFF', config.security.helmet.noSniff?.toString());
312
+ setEnvIfNotSet('HELMET_FRAMEGUARD', config.security.helmet.frameguard?.toString());
313
+ }
314
+
315
+ if (config.security.rateLimit?.global) {
316
+ setEnvIfNotSet(
317
+ 'GLOBAL_RATE_LIMIT_ENABLED',
318
+ config.security.rateLimit.global.enabled?.toString()
319
+ );
320
+ setEnvIfNotSet(
321
+ 'GLOBAL_RATE_LIMIT_REQUESTS',
322
+ config.security.rateLimit.global.requests?.toString()
323
+ );
324
+ setEnvIfNotSet(
325
+ 'GLOBAL_RATE_LIMIT_WINDOW',
326
+ config.security.rateLimit.global.window?.toString()
327
+ );
328
+ }
329
+ }
330
+
331
+ // Apply external services configuration
332
+ if (config.external) {
333
+ if (config.external.stripe) {
334
+ setEnvIfNotSet('STRIPE_SECRET_KEY', config.external.stripe.secretKey);
335
+ setEnvIfNotSet('STRIPE_PUBLISHABLE_KEY', config.external.stripe.publishableKey);
336
+ setEnvIfNotSet('STRIPE_WEBHOOK_SECRET', config.external.stripe.webhookSecret);
337
+ setEnvIfNotSet('STRIPE_API_VERSION', config.external.stripe.apiVersion);
338
+ }
339
+
340
+ if (config.external.paypal) {
341
+ setEnvIfNotSet('PAYPAL_CLIENT_ID', config.external.paypal.clientId);
342
+ setEnvIfNotSet('PAYPAL_CLIENT_SECRET', config.external.paypal.clientSecret);
343
+ setEnvIfNotSet('PAYPAL_WEBHOOK_ID', config.external.paypal.webhookId);
344
+ setEnvIfNotSet('PAYPAL_ENVIRONMENT', config.external.paypal.environment);
345
+ }
346
+
347
+ if (config.external.smtp) {
348
+ setEnvIfNotSet('SMTP_HOST', config.external.smtp.host);
349
+ setEnvIfNotSet('SMTP_PORT', config.external.smtp.port?.toString());
350
+ setEnvIfNotSet('SMTP_SECURE', config.external.smtp.secure?.toString());
351
+ setEnvIfNotSet('SMTP_USERNAME', config.external.smtp.username);
352
+ setEnvIfNotSet('SMTP_PASSWORD', config.external.smtp.password);
353
+ }
354
+ }
355
+
356
+ // Apply performance configuration
357
+ if (config.performance) {
358
+ if (config.performance.compression) {
359
+ setEnvIfNotSet('COMPRESSION_ENABLED', config.performance.compression.enabled?.toString());
360
+ setEnvIfNotSet('COMPRESSION_LEVEL', config.performance.compression.level?.toString());
361
+ setEnvIfNotSet('COMPRESSION_THRESHOLD', config.performance.compression.threshold?.toString());
362
+ }
363
+
364
+ if (config.performance.circuitBreaker) {
365
+ setEnvIfNotSet(
366
+ 'CIRCUIT_BREAKER_ENABLED',
367
+ config.performance.circuitBreaker.enabled?.toString()
368
+ );
369
+ setEnvIfNotSet(
370
+ 'CIRCUIT_BREAKER_THRESHOLD',
371
+ config.performance.circuitBreaker.failureThreshold?.toString()
372
+ );
373
+ setEnvIfNotSet(
374
+ 'CIRCUIT_BREAKER_RESET',
375
+ config.performance.circuitBreaker.resetTimeout?.toString()
376
+ );
377
+ setEnvIfNotSet(
378
+ 'CIRCUIT_BREAKER_MONITOR',
379
+ config.performance.circuitBreaker.monitoringPeriod?.toString()
380
+ );
381
+ }
382
+
383
+ if (config.performance.clustering) {
384
+ setEnvIfNotSet('CLUSTERING_ENABLED', config.performance.clustering.enabled?.toString());
385
+ setEnvIfNotSet('CLUSTER_WORKERS', config.performance.clustering.workers?.toString());
386
+ }
387
+ }
388
+ }
389
+
390
+ /**
391
+ * Set environment variable only if it's not already set
392
+ * This ensures environment variables take precedence over config file values
393
+ */
394
+ function setEnvIfNotSet(key: string, value: string | undefined): void {
395
+ if (value !== undefined && process.env[key] === undefined) {
396
+ process.env[key] = value;
397
+ }
398
+ }
@@ -2,6 +2,7 @@
2
2
  export * from './schema';
3
3
  export * from './loader';
4
4
  export * from './utils';
5
+ export * from './file-loader';
5
6
 
6
7
  // Re-export common Zod utilities for configuration
7
8
  export { z } from 'zod';
@@ -9,6 +10,7 @@ export { z } from 'zod';
9
10
  // Main configuration loading function
10
11
  import { loadConfig } from './loader';
11
12
  import type { AppConfig } from './schema';
13
+ import { setConfig } from './utils';
12
14
 
13
15
  // Global configuration instance
14
16
  let globalConfig: AppConfig | null = null;
@@ -23,6 +25,10 @@ export function initializeConfig(): AppConfig {
23
25
  }
24
26
 
25
27
  globalConfig = loadConfig();
28
+
29
+ // Also set the config for utils functions
30
+ setConfig(globalConfig);
31
+
26
32
  return globalConfig;
27
33
  }
28
34
 
@@ -43,3 +49,15 @@ export function getGlobalConfig(): AppConfig {
43
49
  export function isConfigInitialized(): boolean {
44
50
  return globalConfig !== null;
45
51
  }
52
+
53
+ /**
54
+ * Reset the global configuration state (for testing purposes)
55
+ * @internal
56
+ */
57
+ export function resetConfig(): void {
58
+ globalConfig = null;
59
+
60
+ // Also reset the utils config (by setting it to null via direct access)
61
+ const { setConfig } = require('./utils');
62
+ setConfig(null as any);
63
+ }
@@ -2,15 +2,31 @@
2
2
  import { ZodError } from 'zod';
3
3
  import { ConfigSchema, AppConfig } from './schema';
4
4
  import { createFrameworkLogger } from '../logger';
5
+ import { loadConfigFileSync, applyConfigAsEnvironmentVariables } from './file-loader';
5
6
 
6
7
  const logger = createFrameworkLogger('Config');
7
8
 
8
9
  /**
9
- * Load and validate configuration from environment variables
10
+ * Load and validate configuration from config files and environment variables
11
+ * Priority: Environment Variables > Config File > Schema Defaults
10
12
  * @returns Validated and typed application configuration
11
13
  */
12
14
  export function loadConfig(): AppConfig {
13
- logger.debug('Loading configuration from environment variables');
15
+ logger.debug('Loading configuration from config files and environment variables');
16
+
17
+ // First, try to load from config file and apply as environment variables (synchronously)
18
+ try {
19
+ const fileConfig = loadConfigFileSync();
20
+ if (fileConfig) {
21
+ logger.debug('Applying config file values as environment variables');
22
+ applyConfigAsEnvironmentVariables(fileConfig);
23
+ }
24
+ } catch (error) {
25
+ logger.warn(
26
+ 'Config file loading failed, continuing with environment variables only:',
27
+ String(error)
28
+ );
29
+ }
14
30
 
15
31
  // Map environment variables to configuration structure
16
32
  const envConfig = {
@@ -26,6 +26,42 @@ export function getConfig(): AppConfig {
26
26
  return appConfig;
27
27
  }
28
28
 
29
+ /**
30
+ * Coerce environment variable string values to appropriate types
31
+ */
32
+ function coerceEnvironmentValue(value: string): any {
33
+ // Handle boolean values
34
+ if (value.toLowerCase() === 'true') return true;
35
+ if (value.toLowerCase() === 'false') return false;
36
+
37
+ // Handle numeric values
38
+ if (/^\d+$/.test(value)) {
39
+ const num = parseInt(value, 10);
40
+ return num;
41
+ }
42
+
43
+ if (/^\d+\.\d+$/.test(value)) {
44
+ const num = parseFloat(value);
45
+ return num;
46
+ }
47
+
48
+ // Handle JSON objects/arrays
49
+ if (
50
+ (value.startsWith('{') && value.endsWith('}')) ||
51
+ (value.startsWith('[') && value.endsWith(']'))
52
+ ) {
53
+ try {
54
+ return JSON.parse(value);
55
+ } catch {
56
+ // If JSON parsing fails, return as string
57
+ return value;
58
+ }
59
+ }
60
+
61
+ // Return as string for all other cases
62
+ return value;
63
+ }
64
+
29
65
  /**
30
66
  * Create module-specific configuration with environment override support
31
67
  */
@@ -34,9 +70,17 @@ export function createModuleConfig<T>(
34
70
  defaultConfig: Partial<T>,
35
71
  envPrefix?: string
36
72
  ): T {
37
- const globalConfig = getConfig();
73
+ // Try to get global config, but don't fail if not initialized
74
+ let globalConfig = {};
75
+ try {
76
+ const { getGlobalConfig } = require('./index');
77
+ globalConfig = getGlobalConfig();
78
+ } catch {
79
+ // Global config not initialized - use empty object (module config can still work independently)
80
+ globalConfig = {};
81
+ }
38
82
 
39
- // Build environment configuration object
83
+ // Build environment configuration object with type coercion
40
84
  const envConfig: Record<string, any> = {};
41
85
 
42
86
  if (envPrefix) {
@@ -48,14 +92,20 @@ export function createModuleConfig<T>(
48
92
  .toLowerCase()
49
93
  .replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());
50
94
 
51
- envConfig[configKey] = process.env[key];
95
+ const envValue = process.env[key];
96
+ if (envValue !== undefined) {
97
+ // Attempt basic type coercion for common types
98
+ envConfig[configKey] = coerceEnvironmentValue(envValue);
99
+ }
52
100
  }
53
101
  });
54
102
  }
55
103
 
56
104
  // Merge default config, global defaults, and environment overrides
105
+ // Priority: environment variables > global config > default config
57
106
  const mergedConfig = {
58
107
  ...defaultConfig,
108
+ ...globalConfig, // Now actually using global config!
59
109
  ...envConfig,
60
110
  };
61
111
 
package/src/index.ts CHANGED
@@ -136,7 +136,10 @@ export {
136
136
  getConfigValue,
137
137
  } from './core/config/utils';
138
138
 
139
- export { initializeConfig, getGlobalConfig, isConfigInitialized } from './core/config';
139
+ export { initializeConfig, getGlobalConfig, isConfigInitialized, resetConfig } from './core/config';
140
+
141
+ // Export configuration types for TypeScript users
142
+ export type { AppConfig } from './core/config';
140
143
 
141
144
  // Middleware System
142
145
  export { MiddlewareManager } from './core/middleware';
package/tsconfig.json CHANGED
@@ -18,4 +18,4 @@
18
18
  },
19
19
  "include": ["src/**/*"],
20
20
  "exclude": ["node_modules", "dist"]
21
- }
21
+ }