@morojs/moro 1.5.15 → 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.
@@ -40,7 +40,6 @@ exports.autoDiscoverModuleDirectories = autoDiscoverModuleDirectories;
40
40
  const fs_1 = require("fs");
41
41
  const path_1 = require("path");
42
42
  const logger_1 = require("../logger");
43
- const minimatch_1 = require("minimatch");
44
43
  class ModuleDiscovery {
45
44
  baseDir;
46
45
  options;
@@ -215,16 +214,24 @@ class ModuleDiscovery {
215
214
  const modules = [];
216
215
  const fullPath = (0, path_1.join)(this.baseDir, searchPath);
217
216
  try {
218
- if (!(0, fs_1.statSync)(fullPath).isDirectory()) {
217
+ const stat = (0, fs_1.statSync)(fullPath);
218
+ if (!stat.isDirectory()) {
219
219
  return modules;
220
220
  }
221
- const files = this.findMatchingFiles(fullPath, config);
221
+ }
222
+ catch (error) {
223
+ return modules;
224
+ }
225
+ try {
226
+ const files = await this.findMatchingFilesWithGlob(fullPath, config.patterns, config.ignorePatterns, config.maxDepth);
222
227
  for (const filePath of files) {
223
228
  try {
224
- const module = await this.loadModule(filePath);
229
+ // Convert relative path to absolute path for import
230
+ const absolutePath = (0, path_1.join)(this.baseDir, filePath);
231
+ const module = await this.loadModule(absolutePath);
225
232
  if (module && this.validateAdvancedModule(module, config)) {
226
233
  modules.push(module);
227
- this.discoveryLogger.info(`Auto-discovered module: ${module.name}@${module.version} from ${(0, path_1.relative)(this.baseDir, filePath)}`);
234
+ this.discoveryLogger.info(`Auto-discovered module: ${module.name}@${module.version} from ${filePath}`);
228
235
  }
229
236
  }
230
237
  catch (error) {
@@ -280,13 +287,126 @@ class ModuleDiscovery {
280
287
  }
281
288
  return files;
282
289
  }
290
+ // Use native Node.js glob to find matching files
291
+ async findMatchingFilesWithGlob(searchPath, patterns, ignorePatterns, maxDepth = 5) {
292
+ // Force fallback in CI environments or if Node.js version is uncertain
293
+ const isCI = process.env.CI === 'true' || process.env.GITHUB_ACTIONS === 'true';
294
+ if (isCI) {
295
+ return this.findMatchingFilesFallback(searchPath, patterns, ignorePatterns, maxDepth);
296
+ }
297
+ const allFiles = [];
298
+ try {
299
+ // Try to use native fs.glob if available (Node.js 20+)
300
+ const { glob } = await Promise.resolve().then(() => __importStar(require('fs/promises')));
301
+ // Check if glob is actually a function and test it
302
+ if (typeof glob !== 'function') {
303
+ return this.findMatchingFilesFallback(searchPath, patterns, ignorePatterns, maxDepth);
304
+ }
305
+ // Test glob with a simple pattern first
306
+ try {
307
+ const testIterator = glob((0, path_1.join)(searchPath, '*'));
308
+ let testCount = 0;
309
+ for await (const _ of testIterator) {
310
+ testCount++;
311
+ if (testCount > 0)
312
+ break; // Just test that it works
313
+ }
314
+ }
315
+ catch (testError) {
316
+ return this.findMatchingFilesFallback(searchPath, patterns, ignorePatterns, maxDepth);
317
+ }
318
+ for (const pattern of patterns) {
319
+ const fullPattern = (0, path_1.join)(searchPath, pattern);
320
+ try {
321
+ // fs.glob returns an AsyncIterator, need to collect results
322
+ const globIterator = glob(fullPattern);
323
+ const files = [];
324
+ for await (const file of globIterator) {
325
+ const filePath = typeof file === 'string' ? file : file.name || String(file);
326
+ const relativePath = (0, path_1.relative)(this.baseDir, filePath);
327
+ // Check if file should be ignored and within max depth
328
+ if (!this.shouldIgnore(relativePath, ignorePatterns) &&
329
+ this.isWithinMaxDepth(relativePath, searchPath, maxDepth)) {
330
+ files.push(relativePath);
331
+ }
332
+ }
333
+ allFiles.push(...files);
334
+ }
335
+ catch (error) {
336
+ // If any glob call fails, fall back to manual discovery
337
+ this.discoveryLogger.warn(`Glob pattern failed: ${pattern}`, String(error));
338
+ return this.findMatchingFilesFallback(searchPath, patterns, ignorePatterns, maxDepth);
339
+ }
340
+ }
341
+ }
342
+ catch (error) {
343
+ // fs.glob not available, fall back to manual file discovery
344
+ this.discoveryLogger.debug('Native fs.glob not available, using fallback');
345
+ return this.findMatchingFilesFallback(searchPath, patterns, ignorePatterns, maxDepth);
346
+ }
347
+ return [...new Set(allFiles)]; // Remove duplicates
348
+ }
349
+ // Fallback for Node.js versions without fs.glob
350
+ async findMatchingFilesFallback(searchPath, patterns, ignorePatterns, maxDepth = 5) {
351
+ const config = {
352
+ patterns,
353
+ ignorePatterns,
354
+ maxDepth,
355
+ recursive: true,
356
+ };
357
+ // Handle both absolute and relative paths
358
+ const fullSearchPath = (0, path_1.isAbsolute)(searchPath) ? searchPath : (0, path_1.join)(this.baseDir, searchPath);
359
+ // Check if search path exists
360
+ try {
361
+ const { access } = await Promise.resolve().then(() => __importStar(require('fs/promises')));
362
+ await access(fullSearchPath);
363
+ }
364
+ catch (e) {
365
+ return [];
366
+ }
367
+ // Get files and convert to relative paths
368
+ const files = this.findMatchingFiles(fullSearchPath, config);
369
+ const relativeFiles = files.map(file => (0, path_1.relative)(this.baseDir, file));
370
+ return relativeFiles;
371
+ }
372
+ // Simple pattern matching for fallback (basic glob support)
373
+ matchesSimplePattern(path, pattern) {
374
+ try {
375
+ // Normalize path separators
376
+ const normalizedPath = path.replace(/\\/g, '/');
377
+ const normalizedPattern = pattern.replace(/\\/g, '/');
378
+ // Convert simple glob patterns to regex
379
+ const regexPattern = normalizedPattern
380
+ .replace(/\*\*/g, '___DOUBLESTAR___') // Temporarily replace ** BEFORE escaping
381
+ .replace(/[.+^${}()|[\]\\]/g, '\\$&') // Escape regex chars
382
+ .replace(/\\\*/g, '[^/]*') // * matches anything except /
383
+ .replace(/___DOUBLESTAR___/g, '.*') // ** matches anything including /
384
+ .replace(/\\\?/g, '[^/]') // ? matches single character except /
385
+ .replace(/\\\{([^}]+)\\\}/g, '($1)') // {ts,js} -> (ts|js)
386
+ .replace(/,/g, '|'); // Convert comma to OR
387
+ const regex = new RegExp(`^${regexPattern}$`, 'i');
388
+ const result = regex.test(normalizedPath);
389
+ return result;
390
+ }
391
+ catch (error) {
392
+ this.discoveryLogger.warn(`Pattern matching error for "${pattern}": ${String(error)}`);
393
+ return false;
394
+ }
395
+ }
283
396
  // Check if path should be ignored
284
397
  shouldIgnore(path, ignorePatterns) {
285
- return ignorePatterns.some(pattern => (0, minimatch_1.minimatch)(path, pattern));
398
+ return ignorePatterns.some(pattern => this.matchesSimplePattern(path, pattern));
286
399
  }
287
400
  // Check if path matches any of the patterns
288
401
  matchesPatterns(path, patterns) {
289
- return patterns.some(pattern => (0, minimatch_1.minimatch)(path, pattern));
402
+ return patterns.some(pattern => this.matchesSimplePattern(path, pattern));
403
+ }
404
+ // Check if file is within max depth (for glob results)
405
+ isWithinMaxDepth(relativePath, searchPath, maxDepth) {
406
+ // Count directory separators to determine depth
407
+ const pathFromSearch = (0, path_1.relative)(searchPath, (0, path_1.join)(this.baseDir, relativePath));
408
+ const depth = pathFromSearch.split('/').length - 1; // -1 because file itself doesn't count as depth
409
+ return depth <= maxDepth;
290
410
  }
291
411
  // Remove duplicate modules
292
412
  deduplicateModules(modules) {
@@ -1 +1 @@
1
- {"version":3,"file":"auto-discovery.js","sourceRoot":"","sources":["../../../src/core/modules/auto-discovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auto-discovery.js","sourceRoot":"","sources":["../../../src/core/modules/auto-discovery.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
- // Auto-discover modules if enabled
137
- if (options.autoDiscover !== false) {
138
- // Initialize auto-discovery asynchronously
139
- this.initializeAutoDiscovery(options).catch(error => {
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 actualCallback = () => {
427
- const displayHost = host || 'localhost';
428
- this.logger.info('Moro Server Started', 'Server');
429
- this.logger.info(`Runtime: ${this.runtimeType}`, 'Server');
430
- this.logger.info(`HTTP API: http://${displayHost}:${port}`, 'Server');
431
- if (this.config.websocket.enabled) {
432
- this.logger.info(`WebSocket: ws://${displayHost}:${port}`, 'Server');
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
- this.logger.info('Learn more at https://morojs.com', 'Server');
435
- // Log intelligent routes info
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
- if (host && typeof host === 'string') {
445
- this.coreFramework.listen(port, host, actualCallback);
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
- else {
448
- this.coreFramework.listen(port, actualCallback);
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) => {