@morojs/moro 1.5.16 → 1.5.17
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/dist/core/framework.d.ts +2 -0
- package/dist/core/framework.js +32 -4
- package/dist/core/framework.js.map +1 -1
- package/dist/core/http/http-server.js +2 -147
- package/dist/core/http/http-server.js.map +1 -1
- package/dist/core/middleware/built-in/auth.js +46 -35
- package/dist/core/middleware/built-in/auth.js.map +1 -1
- package/dist/core/middleware/built-in/jwt-helpers.d.ts +26 -1
- package/dist/core/middleware/built-in/jwt-helpers.js +26 -1
- package/dist/core/middleware/built-in/jwt-helpers.js.map +1 -1
- package/dist/moro.d.ts +17 -0
- package/dist/moro.js +134 -28
- package/dist/moro.js.map +1 -1
- package/package.json +1 -1
- package/src/core/framework.ts +42 -5
- package/src/core/http/http-server.ts +2 -150
- package/src/core/middleware/built-in/auth.ts +60 -37
- package/src/core/middleware/built-in/jwt-helpers.ts +26 -1
- package/src/moro.ts +163 -28
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.auth = exports.providers = void 0;
|
|
5
5
|
const logger_1 = require("../../logger");
|
|
6
|
+
const jwt_helpers_1 = require("./jwt-helpers");
|
|
6
7
|
const logger = (0, logger_1.createFrameworkLogger)('AuthMiddleware');
|
|
7
8
|
// Auth.js provider factory functions
|
|
8
9
|
exports.providers = {
|
|
@@ -157,30 +158,53 @@ const auth = (options) => ({
|
|
|
157
158
|
}
|
|
158
159
|
}
|
|
159
160
|
catch (error) {
|
|
160
|
-
// Handle specific JWT errors gracefully
|
|
161
|
+
// Handle specific JWT errors gracefully and return proper HTTP responses
|
|
161
162
|
if (error.name === 'TokenExpiredError') {
|
|
162
163
|
logger.debug('JWT token expired', 'TokenValidation', {
|
|
163
164
|
message: error.message,
|
|
164
165
|
expiredAt: error.expiredAt,
|
|
165
166
|
});
|
|
167
|
+
// If this is a protected route request, return a proper 401 response
|
|
168
|
+
if (req.headers.accept?.includes('application/json')) {
|
|
169
|
+
return res.status(401).json((0, jwt_helpers_1.createAuthErrorResponse)({
|
|
170
|
+
type: 'expired',
|
|
171
|
+
message: error.message,
|
|
172
|
+
expiredAt: error.expiredAt,
|
|
173
|
+
}));
|
|
174
|
+
}
|
|
166
175
|
}
|
|
167
176
|
else if (error.name === 'JsonWebTokenError') {
|
|
168
177
|
logger.debug('Invalid JWT token format', 'TokenValidation', {
|
|
169
178
|
message: error.message,
|
|
170
179
|
});
|
|
180
|
+
// If this is a protected route request, return a proper 401 response
|
|
181
|
+
if (req.headers.accept?.includes('application/json')) {
|
|
182
|
+
return res.status(401).json((0, jwt_helpers_1.createAuthErrorResponse)({
|
|
183
|
+
type: 'invalid',
|
|
184
|
+
message: error.message,
|
|
185
|
+
}));
|
|
186
|
+
}
|
|
171
187
|
}
|
|
172
188
|
else if (error.name === 'NotBeforeError') {
|
|
173
189
|
logger.debug('JWT token not active yet', 'TokenValidation', {
|
|
174
190
|
message: error.message,
|
|
175
191
|
date: error.date,
|
|
176
192
|
});
|
|
193
|
+
// If this is a protected route request, return a proper 401 response
|
|
194
|
+
if (req.headers.accept?.includes('application/json')) {
|
|
195
|
+
return res.status(401).json((0, jwt_helpers_1.createAuthErrorResponse)({
|
|
196
|
+
type: 'malformed',
|
|
197
|
+
message: error.message,
|
|
198
|
+
date: error.date,
|
|
199
|
+
}));
|
|
200
|
+
}
|
|
177
201
|
}
|
|
178
202
|
else {
|
|
179
203
|
logger.debug('JWT token validation failed', 'TokenValidation', {
|
|
180
204
|
error: error.message || error,
|
|
181
205
|
});
|
|
182
206
|
}
|
|
183
|
-
// Continue with unauthenticated state -
|
|
207
|
+
// Continue with unauthenticated state for non-API requests
|
|
184
208
|
}
|
|
185
209
|
}
|
|
186
210
|
// Try session cookie if no valid token
|
|
@@ -260,43 +284,30 @@ async function initializeAuthJS(config) {
|
|
|
260
284
|
return null;
|
|
261
285
|
},
|
|
262
286
|
verifyJWT: async (token) => {
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
}
|
|
277
|
-
try {
|
|
278
|
-
const decoded = jwt.verify(token, secret);
|
|
279
|
-
return decoded;
|
|
280
|
-
}
|
|
281
|
-
catch (error) {
|
|
282
|
-
// Handle specific JWT errors gracefully
|
|
283
|
-
if (error.name === 'TokenExpiredError') {
|
|
284
|
-
// Token expired - handled gracefully by auth middleware
|
|
285
|
-
throw error;
|
|
286
|
-
}
|
|
287
|
-
else if (error.name === 'JsonWebTokenError') {
|
|
288
|
-
// Invalid token format
|
|
289
|
-
throw error;
|
|
287
|
+
const secret = process.env.JWT_SECRET || config.jwt?.secret || config.secret || '';
|
|
288
|
+
// Use the safe JWT verification function
|
|
289
|
+
const result = (0, jwt_helpers_1.safeVerifyJWT)(token, secret);
|
|
290
|
+
if (!result.success) {
|
|
291
|
+
// Create a custom error that includes the structured error information
|
|
292
|
+
const customError = new Error(result.error?.message || 'JWT verification failed');
|
|
293
|
+
// Add the error type information for upstream handling
|
|
294
|
+
customError.jwtErrorType = result.error?.type;
|
|
295
|
+
customError.jwtErrorDetails = result.error;
|
|
296
|
+
// Map the safe error types back to standard JWT error names for compatibility
|
|
297
|
+
if (result.error?.type === 'expired') {
|
|
298
|
+
customError.name = 'TokenExpiredError';
|
|
299
|
+
customError.expiredAt = result.error.expiredAt;
|
|
290
300
|
}
|
|
291
|
-
else if (error
|
|
292
|
-
|
|
293
|
-
throw error;
|
|
301
|
+
else if (result.error?.type === 'invalid') {
|
|
302
|
+
customError.name = 'JsonWebTokenError';
|
|
294
303
|
}
|
|
295
|
-
else {
|
|
296
|
-
|
|
297
|
-
|
|
304
|
+
else if (result.error?.type === 'malformed') {
|
|
305
|
+
customError.name = 'NotBeforeError';
|
|
306
|
+
customError.date = result.error.date;
|
|
298
307
|
}
|
|
308
|
+
throw customError;
|
|
299
309
|
}
|
|
310
|
+
return result.payload;
|
|
300
311
|
},
|
|
301
312
|
signIn: async (provider, options) => {
|
|
302
313
|
// Basic sign in redirect
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../src/core/middleware/built-in/auth.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../src/core/middleware/built-in/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -56,7 +56,7 @@ export declare function createAuthErrorResponse(error: JWTVerificationResult['er
|
|
|
56
56
|
expiredAt?: undefined;
|
|
57
57
|
};
|
|
58
58
|
/**
|
|
59
|
-
* Example usage for custom middleware:
|
|
59
|
+
* Example usage for custom middleware with elegant error handling:
|
|
60
60
|
*
|
|
61
61
|
* ```typescript
|
|
62
62
|
* import { safeVerifyJWT, extractJWTFromHeader, createAuthErrorResponse } from '@morojs/moro';
|
|
@@ -75,6 +75,7 @@ export declare function createAuthErrorResponse(error: JWTVerificationResult['er
|
|
|
75
75
|
* const result = safeVerifyJWT(token, process.env.JWT_SECRET!);
|
|
76
76
|
*
|
|
77
77
|
* if (!result.success) {
|
|
78
|
+
* // This provides elegant, user-friendly error messages instead of stack traces
|
|
78
79
|
* const errorResponse = createAuthErrorResponse(result.error);
|
|
79
80
|
* return res.status(401).json(errorResponse);
|
|
80
81
|
* }
|
|
@@ -90,4 +91,28 @@ export declare function createAuthErrorResponse(error: JWTVerificationResult['er
|
|
|
90
91
|
* next();
|
|
91
92
|
* };
|
|
92
93
|
* ```
|
|
94
|
+
*
|
|
95
|
+
* Benefits of using safeVerifyJWT vs raw jsonwebtoken.verify():
|
|
96
|
+
*
|
|
97
|
+
* ❌ Raw approach (shows ugly error messages to users):
|
|
98
|
+
* ```typescript
|
|
99
|
+
* try {
|
|
100
|
+
* const decoded = jwt.verify(token, secret);
|
|
101
|
+
* req.user = decoded;
|
|
102
|
+
* } catch (error) {
|
|
103
|
+
* // This exposes technical details and stack traces to users:
|
|
104
|
+
* // "Invalid token: TokenExpiredError: jwt expired at /node_modules/jsonwebtoken/verify.js:190:21..."
|
|
105
|
+
* throw error; // BAD - exposes internal details
|
|
106
|
+
* }
|
|
107
|
+
* ```
|
|
108
|
+
*
|
|
109
|
+
* ✅ Safe approach (shows clean, user-friendly messages):
|
|
110
|
+
* ```typescript
|
|
111
|
+
* const result = safeVerifyJWT(token, secret);
|
|
112
|
+
* if (!result.success) {
|
|
113
|
+
* // This returns clean messages like:
|
|
114
|
+
* // { "error": "Token expired", "message": "Your session has expired. Please sign in again." }
|
|
115
|
+
* return res.status(401).json(createAuthErrorResponse(result.error));
|
|
116
|
+
* }
|
|
117
|
+
* ```
|
|
93
118
|
*/
|
|
@@ -158,7 +158,7 @@ function createAuthErrorResponse(error) {
|
|
|
158
158
|
}
|
|
159
159
|
}
|
|
160
160
|
/**
|
|
161
|
-
* Example usage for custom middleware:
|
|
161
|
+
* Example usage for custom middleware with elegant error handling:
|
|
162
162
|
*
|
|
163
163
|
* ```typescript
|
|
164
164
|
* import { safeVerifyJWT, extractJWTFromHeader, createAuthErrorResponse } from '@morojs/moro';
|
|
@@ -177,6 +177,7 @@ function createAuthErrorResponse(error) {
|
|
|
177
177
|
* const result = safeVerifyJWT(token, process.env.JWT_SECRET!);
|
|
178
178
|
*
|
|
179
179
|
* if (!result.success) {
|
|
180
|
+
* // This provides elegant, user-friendly error messages instead of stack traces
|
|
180
181
|
* const errorResponse = createAuthErrorResponse(result.error);
|
|
181
182
|
* return res.status(401).json(errorResponse);
|
|
182
183
|
* }
|
|
@@ -192,5 +193,29 @@ function createAuthErrorResponse(error) {
|
|
|
192
193
|
* next();
|
|
193
194
|
* };
|
|
194
195
|
* ```
|
|
196
|
+
*
|
|
197
|
+
* Benefits of using safeVerifyJWT vs raw jsonwebtoken.verify():
|
|
198
|
+
*
|
|
199
|
+
* ❌ Raw approach (shows ugly error messages to users):
|
|
200
|
+
* ```typescript
|
|
201
|
+
* try {
|
|
202
|
+
* const decoded = jwt.verify(token, secret);
|
|
203
|
+
* req.user = decoded;
|
|
204
|
+
* } catch (error) {
|
|
205
|
+
* // This exposes technical details and stack traces to users:
|
|
206
|
+
* // "Invalid token: TokenExpiredError: jwt expired at /node_modules/jsonwebtoken/verify.js:190:21..."
|
|
207
|
+
* throw error; // BAD - exposes internal details
|
|
208
|
+
* }
|
|
209
|
+
* ```
|
|
210
|
+
*
|
|
211
|
+
* ✅ Safe approach (shows clean, user-friendly messages):
|
|
212
|
+
* ```typescript
|
|
213
|
+
* const result = safeVerifyJWT(token, secret);
|
|
214
|
+
* if (!result.success) {
|
|
215
|
+
* // This returns clean messages like:
|
|
216
|
+
* // { "error": "Token expired", "message": "Your session has expired. Please sign in again." }
|
|
217
|
+
* return res.status(401).json(createAuthErrorResponse(result.error));
|
|
218
|
+
* }
|
|
219
|
+
* ```
|
|
195
220
|
*/
|
|
196
221
|
//# sourceMappingURL=jwt-helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwt-helpers.js","sourceRoot":"","sources":["../../../../src/core/middleware/built-in/jwt-helpers.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"jwt-helpers.js","sourceRoot":"","sources":["../../../../src/core/middleware/built-in/jwt-helpers.ts"],"names":[],"mappings":"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"}
|
package/dist/moro.d.ts
CHANGED
|
@@ -16,6 +16,9 @@ export declare class Moro extends EventEmitter {
|
|
|
16
16
|
private lazyModules;
|
|
17
17
|
private routeHandlers;
|
|
18
18
|
private moduleDiscovery?;
|
|
19
|
+
private autoDiscoveryOptions;
|
|
20
|
+
private autoDiscoveryInitialized;
|
|
21
|
+
private autoDiscoveryPromise;
|
|
19
22
|
private eventBus;
|
|
20
23
|
private logger;
|
|
21
24
|
private intelligentRouting;
|
|
@@ -65,6 +68,20 @@ export declare class Moro extends EventEmitter {
|
|
|
65
68
|
listen(callback?: () => void): void;
|
|
66
69
|
listen(port: number, callback?: () => void): void;
|
|
67
70
|
listen(port: number, host: string, callback?: () => void): void;
|
|
71
|
+
initializeAutoDiscoveryNow(): Promise<void>;
|
|
72
|
+
initModules(options?: {
|
|
73
|
+
paths?: string[];
|
|
74
|
+
patterns?: string[];
|
|
75
|
+
recursive?: boolean;
|
|
76
|
+
loadingStrategy?: 'eager' | 'lazy' | 'conditional';
|
|
77
|
+
watchForChanges?: boolean;
|
|
78
|
+
ignorePatterns?: string[];
|
|
79
|
+
loadOrder?: 'alphabetical' | 'dependency' | 'custom';
|
|
80
|
+
failOnError?: boolean;
|
|
81
|
+
maxDepth?: number;
|
|
82
|
+
}): void;
|
|
83
|
+
private ensureAutoDiscoveryComplete;
|
|
84
|
+
private performAutoDiscovery;
|
|
68
85
|
getHandler(): any;
|
|
69
86
|
private handleDirectRoutes;
|
|
70
87
|
private routeCache;
|
package/dist/moro.js
CHANGED
|
@@ -61,6 +61,9 @@ class Moro extends events_1.EventEmitter {
|
|
|
61
61
|
lazyModules = new Map();
|
|
62
62
|
routeHandlers = {};
|
|
63
63
|
moduleDiscovery; // Store for cleanup
|
|
64
|
+
autoDiscoveryOptions = null;
|
|
65
|
+
autoDiscoveryInitialized = false;
|
|
66
|
+
autoDiscoveryPromise = null;
|
|
64
67
|
// Enterprise event system integration
|
|
65
68
|
eventBus;
|
|
66
69
|
// Application logger
|
|
@@ -133,15 +136,10 @@ class Moro extends events_1.EventEmitter {
|
|
|
133
136
|
...this.getDefaultOptionsFromConfig(),
|
|
134
137
|
...options,
|
|
135
138
|
});
|
|
136
|
-
//
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
this.logger.error('Auto-discovery initialization failed', 'Framework', {
|
|
141
|
-
error: error instanceof Error ? error.message : String(error),
|
|
142
|
-
});
|
|
143
|
-
});
|
|
144
|
-
}
|
|
139
|
+
// Store auto-discovery options for later initialization
|
|
140
|
+
// IMPORTANT: Auto-discovery is deferred to ensure user middleware (like auth)
|
|
141
|
+
// is registered before module middleware that might bypass it
|
|
142
|
+
this.autoDiscoveryOptions = options.autoDiscover !== false ? options : null;
|
|
145
143
|
// Emit initialization event through enterprise event bus
|
|
146
144
|
this.eventBus.emit('framework:initialized', {
|
|
147
145
|
options,
|
|
@@ -307,6 +305,11 @@ class Moro extends events_1.EventEmitter {
|
|
|
307
305
|
version: moduleOrPath.version || '1.0.0',
|
|
308
306
|
});
|
|
309
307
|
}
|
|
308
|
+
// IMPORTANT: If modules are loaded manually after auto-discovery,
|
|
309
|
+
// ensure the final module handler is set up to maintain middleware order
|
|
310
|
+
if (this.autoDiscoveryInitialized) {
|
|
311
|
+
this.coreFramework.setupFinalModuleHandler();
|
|
312
|
+
}
|
|
310
313
|
return this;
|
|
311
314
|
}
|
|
312
315
|
// Database helper with events
|
|
@@ -423,33 +426,134 @@ class Moro extends events_1.EventEmitter {
|
|
|
423
426
|
if (this.routes.length > 0) {
|
|
424
427
|
this.registerDirectRoutes();
|
|
425
428
|
}
|
|
426
|
-
const
|
|
427
|
-
const
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
this.
|
|
429
|
+
const startServer = () => {
|
|
430
|
+
const actualCallback = () => {
|
|
431
|
+
const displayHost = host || 'localhost';
|
|
432
|
+
this.logger.info('Moro Server Started', 'Server');
|
|
433
|
+
this.logger.info(`Runtime: ${this.runtimeType}`, 'Server');
|
|
434
|
+
this.logger.info(`HTTP API: http://${displayHost}:${port}`, 'Server');
|
|
435
|
+
if (this.config.websocket.enabled) {
|
|
436
|
+
this.logger.info(`WebSocket: ws://${displayHost}:${port}`, 'Server');
|
|
437
|
+
}
|
|
438
|
+
this.logger.info('Learn more at https://morojs.com', 'Server');
|
|
439
|
+
// Log intelligent routes info
|
|
440
|
+
const intelligentRoutes = this.intelligentRouting.getIntelligentRoutes();
|
|
441
|
+
if (intelligentRoutes.length > 0) {
|
|
442
|
+
this.logger.info(`Intelligent Routes: ${intelligentRoutes.length} registered`, 'Server');
|
|
443
|
+
}
|
|
444
|
+
this.eventBus.emit('server:started', { port, runtime: this.runtimeType });
|
|
445
|
+
if (callback)
|
|
446
|
+
callback();
|
|
447
|
+
};
|
|
448
|
+
if (host && typeof host === 'string') {
|
|
449
|
+
this.coreFramework.listen(port, host, actualCallback);
|
|
433
450
|
}
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
const intelligentRoutes = this.intelligentRouting.getIntelligentRoutes();
|
|
437
|
-
if (intelligentRoutes.length > 0) {
|
|
438
|
-
this.logger.info(`Intelligent Routes: ${intelligentRoutes.length} registered`, 'Server');
|
|
451
|
+
else {
|
|
452
|
+
this.coreFramework.listen(port, actualCallback);
|
|
439
453
|
}
|
|
440
|
-
this.eventBus.emit('server:started', { port, runtime: this.runtimeType });
|
|
441
|
-
if (callback)
|
|
442
|
-
callback();
|
|
443
454
|
};
|
|
444
|
-
|
|
445
|
-
|
|
455
|
+
// Ensure auto-discovery is complete before starting server
|
|
456
|
+
this.ensureAutoDiscoveryComplete()
|
|
457
|
+
.then(() => {
|
|
458
|
+
startServer();
|
|
459
|
+
})
|
|
460
|
+
.catch(error => {
|
|
461
|
+
this.logger.error('Auto-discovery initialization failed during server start', 'Framework', {
|
|
462
|
+
error: error instanceof Error ? error.message : String(error),
|
|
463
|
+
});
|
|
464
|
+
// Start server anyway - auto-discovery failure shouldn't prevent startup
|
|
465
|
+
startServer();
|
|
466
|
+
});
|
|
467
|
+
}
|
|
468
|
+
// Public method to manually initialize auto-discovery
|
|
469
|
+
// Useful for ensuring auth middleware is registered before auto-discovery
|
|
470
|
+
async initializeAutoDiscoveryNow() {
|
|
471
|
+
return this.ensureAutoDiscoveryComplete();
|
|
472
|
+
}
|
|
473
|
+
// Public API: Initialize modules explicitly after middleware setup
|
|
474
|
+
// This provides users with explicit control over module loading timing
|
|
475
|
+
// IMPORTANT: This forces module loading even if autoDiscovery.enabled is false
|
|
476
|
+
// Usage: app.initModules() or app.initModules({ paths: ['./my-modules'] })
|
|
477
|
+
initModules(options) {
|
|
478
|
+
this.logger.info('User-requested module initialization', 'ModuleSystem');
|
|
479
|
+
// If already initialized, do nothing
|
|
480
|
+
if (this.autoDiscoveryInitialized) {
|
|
481
|
+
this.logger.debug('Auto-discovery already completed, skipping', 'ModuleSystem');
|
|
482
|
+
return;
|
|
446
483
|
}
|
|
447
|
-
|
|
448
|
-
|
|
484
|
+
// Store the options and mark that we want to force initialization
|
|
485
|
+
this.autoDiscoveryOptions = {
|
|
486
|
+
autoDiscover: {
|
|
487
|
+
enabled: true, // Force enabled regardless of original config
|
|
488
|
+
paths: options?.paths || ['./modules', './src/modules'],
|
|
489
|
+
patterns: options?.patterns || [
|
|
490
|
+
'**/*.module.{ts,js}',
|
|
491
|
+
'**/index.{ts,js}',
|
|
492
|
+
'**/*.config.{ts,js}',
|
|
493
|
+
],
|
|
494
|
+
recursive: options?.recursive ?? true,
|
|
495
|
+
loadingStrategy: options?.loadingStrategy || 'eager',
|
|
496
|
+
watchForChanges: options?.watchForChanges ?? false,
|
|
497
|
+
ignorePatterns: options?.ignorePatterns || [
|
|
498
|
+
'**/*.test.{ts,js}',
|
|
499
|
+
'**/*.spec.{ts,js}',
|
|
500
|
+
'**/node_modules/**',
|
|
501
|
+
],
|
|
502
|
+
loadOrder: options?.loadOrder || 'dependency',
|
|
503
|
+
failOnError: options?.failOnError ?? false,
|
|
504
|
+
maxDepth: options?.maxDepth ?? 5,
|
|
505
|
+
},
|
|
506
|
+
};
|
|
507
|
+
this.logger.debug('Module initialization options stored, will execute on next listen/getHandler call', 'ModuleSystem');
|
|
508
|
+
}
|
|
509
|
+
// Robust method to ensure auto-discovery is complete, handling race conditions
|
|
510
|
+
async ensureAutoDiscoveryComplete() {
|
|
511
|
+
// If already initialized, nothing to do
|
|
512
|
+
if (this.autoDiscoveryInitialized) {
|
|
513
|
+
return;
|
|
514
|
+
}
|
|
515
|
+
// If auto-discovery is disabled, mark as initialized
|
|
516
|
+
if (!this.autoDiscoveryOptions) {
|
|
517
|
+
this.autoDiscoveryInitialized = true;
|
|
518
|
+
return;
|
|
519
|
+
}
|
|
520
|
+
// If already in progress, wait for it to complete
|
|
521
|
+
if (this.autoDiscoveryPromise) {
|
|
522
|
+
return this.autoDiscoveryPromise;
|
|
523
|
+
}
|
|
524
|
+
// Start auto-discovery
|
|
525
|
+
this.autoDiscoveryPromise = this.performAutoDiscovery();
|
|
526
|
+
try {
|
|
527
|
+
await this.autoDiscoveryPromise;
|
|
528
|
+
this.autoDiscoveryInitialized = true;
|
|
529
|
+
}
|
|
530
|
+
catch (error) {
|
|
531
|
+
// Reset promise on error so it can be retried
|
|
532
|
+
this.autoDiscoveryPromise = null;
|
|
533
|
+
throw error;
|
|
534
|
+
}
|
|
535
|
+
finally {
|
|
536
|
+
this.autoDiscoveryOptions = null; // Clear after attempt
|
|
449
537
|
}
|
|
450
538
|
}
|
|
539
|
+
// Perform the actual auto-discovery work
|
|
540
|
+
async performAutoDiscovery(optionsOverride) {
|
|
541
|
+
const optionsToUse = optionsOverride || this.autoDiscoveryOptions;
|
|
542
|
+
if (!optionsToUse)
|
|
543
|
+
return;
|
|
544
|
+
this.logger.debug('Starting auto-discovery initialization', 'AutoDiscovery');
|
|
545
|
+
await this.initializeAutoDiscovery(optionsToUse);
|
|
546
|
+
this.logger.debug('Auto-discovery initialization completed', 'AutoDiscovery');
|
|
547
|
+
}
|
|
451
548
|
// Get handler for non-Node.js runtimes
|
|
452
549
|
getHandler() {
|
|
550
|
+
// Ensure auto-discovery is complete for non-Node.js runtimes
|
|
551
|
+
// This handles the case where users call getHandler() immediately after createApp()
|
|
552
|
+
this.ensureAutoDiscoveryComplete().catch(error => {
|
|
553
|
+
this.logger.error('Auto-discovery initialization failed for runtime handler', 'Framework', {
|
|
554
|
+
error: error instanceof Error ? error.message : String(error),
|
|
555
|
+
});
|
|
556
|
+
});
|
|
453
557
|
// Create a unified request handler that works with the runtime adapter
|
|
454
558
|
const handler = async (req, res) => {
|
|
455
559
|
// Add documentation middleware first (if enabled)
|
|
@@ -777,6 +881,8 @@ class Moro extends events_1.EventEmitter {
|
|
|
777
881
|
const modules = await this.moduleDiscovery.discoverModulesAdvanced(autoDiscoveryConfig);
|
|
778
882
|
// Load modules based on strategy
|
|
779
883
|
await this.loadDiscoveredModules(modules, autoDiscoveryConfig);
|
|
884
|
+
// Setup final module handler to run after user middleware (like auth)
|
|
885
|
+
this.coreFramework.setupFinalModuleHandler();
|
|
780
886
|
// Setup file watching if enabled
|
|
781
887
|
if (autoDiscoveryConfig.watchForChanges) {
|
|
782
888
|
this.moduleDiscovery.watchModulesAdvanced(autoDiscoveryConfig, async (updatedModules) => {
|