@morojs/moro 1.5.13 → 1.5.15
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/config/config-validator.js +21 -0
- package/dist/core/config/config-validator.js.map +1 -1
- package/dist/core/config/schema.js +12 -0
- package/dist/core/config/schema.js.map +1 -1
- package/dist/core/http/http-server.js +94 -2
- package/dist/core/http/http-server.js.map +1 -1
- package/dist/core/modules/auto-discovery.d.ts +13 -0
- package/dist/core/modules/auto-discovery.js +247 -12
- package/dist/core/modules/auto-discovery.js.map +1 -1
- package/dist/moro.d.ts +9 -0
- package/dist/moro.js +178 -22
- package/dist/moro.js.map +1 -1
- package/dist/types/config.d.ts +12 -0
- package/dist/types/core.d.ts +12 -1
- package/package.json +3 -2
- package/src/core/config/config-validator.ts +36 -0
- package/src/core/config/schema.ts +12 -0
- package/src/core/http/http-server.ts +94 -2
- package/src/core/modules/auto-discovery.ts +322 -11
- package/src/moro.ts +224 -37
- package/src/types/config.ts +12 -0
- package/src/types/core.ts +15 -2
|
@@ -40,10 +40,12 @@ 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");
|
|
43
44
|
class ModuleDiscovery {
|
|
44
45
|
baseDir;
|
|
45
46
|
options;
|
|
46
47
|
discoveryLogger = (0, logger_1.createFrameworkLogger)('MODULE_DISCOVERY');
|
|
48
|
+
watchers = []; // Store file watchers for cleanup
|
|
47
49
|
constructor(baseDir = process.cwd(), options = {}) {
|
|
48
50
|
this.baseDir = baseDir;
|
|
49
51
|
this.options = {
|
|
@@ -187,22 +189,255 @@ class ModuleDiscovery {
|
|
|
187
189
|
(obj.websockets === undefined || Array.isArray(obj.websockets)) &&
|
|
188
190
|
(obj.services === undefined || Array.isArray(obj.services)));
|
|
189
191
|
}
|
|
190
|
-
//
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
192
|
+
// Enhanced auto-discovery with advanced configuration
|
|
193
|
+
async discoverModulesAdvanced(config) {
|
|
194
|
+
if (!config.enabled) {
|
|
195
|
+
return [];
|
|
196
|
+
}
|
|
197
|
+
const allModules = [];
|
|
198
|
+
// Discover from all configured paths
|
|
199
|
+
for (const searchPath of config.paths) {
|
|
200
|
+
const modules = await this.discoverFromPath(searchPath, config);
|
|
201
|
+
allModules.push(...modules);
|
|
202
|
+
}
|
|
203
|
+
// Remove duplicates based on name@version
|
|
204
|
+
const uniqueModules = this.deduplicateModules(allModules);
|
|
205
|
+
// Sort modules based on load order strategy
|
|
206
|
+
const sortedModules = this.sortModules(uniqueModules, config.loadOrder);
|
|
207
|
+
// Validate dependencies if using dependency order
|
|
208
|
+
if (config.loadOrder === 'dependency') {
|
|
209
|
+
return this.resolveDependencyOrder(sortedModules);
|
|
210
|
+
}
|
|
211
|
+
return sortedModules;
|
|
212
|
+
}
|
|
213
|
+
// Discover modules from a specific path with advanced filtering
|
|
214
|
+
async discoverFromPath(searchPath, config) {
|
|
215
|
+
const modules = [];
|
|
216
|
+
const fullPath = (0, path_1.join)(this.baseDir, searchPath);
|
|
217
|
+
try {
|
|
218
|
+
if (!(0, fs_1.statSync)(fullPath).isDirectory()) {
|
|
219
|
+
return modules;
|
|
220
|
+
}
|
|
221
|
+
const files = this.findMatchingFiles(fullPath, config);
|
|
222
|
+
for (const filePath of files) {
|
|
223
|
+
try {
|
|
224
|
+
const module = await this.loadModule(filePath);
|
|
225
|
+
if (module && this.validateAdvancedModule(module, config)) {
|
|
226
|
+
modules.push(module);
|
|
227
|
+
this.discoveryLogger.info(`Auto-discovered module: ${module.name}@${module.version} from ${(0, path_1.relative)(this.baseDir, filePath)}`);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
catch (error) {
|
|
231
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
232
|
+
if (config.failOnError) {
|
|
233
|
+
throw new Error(`Failed to load module from ${filePath}: ${errorMsg}`);
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
this.discoveryLogger.warn(`Failed to load module from ${filePath}`, 'MODULE_DISCOVERY', {
|
|
237
|
+
error: errorMsg,
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
catch (error) {
|
|
244
|
+
if (config.failOnError) {
|
|
245
|
+
throw error;
|
|
246
|
+
}
|
|
247
|
+
// Directory doesn't exist or other error, continue silently
|
|
248
|
+
}
|
|
249
|
+
return modules;
|
|
250
|
+
}
|
|
251
|
+
// Find files matching patterns with ignore support
|
|
252
|
+
findMatchingFiles(basePath, config, currentDepth = 0) {
|
|
253
|
+
const files = [];
|
|
254
|
+
if (currentDepth >= config.maxDepth) {
|
|
255
|
+
return files;
|
|
256
|
+
}
|
|
257
|
+
try {
|
|
258
|
+
const items = (0, fs_1.readdirSync)(basePath);
|
|
259
|
+
for (const item of items) {
|
|
260
|
+
const fullPath = (0, path_1.join)(basePath, item);
|
|
261
|
+
const relativePath = (0, path_1.relative)(this.baseDir, fullPath);
|
|
262
|
+
// Check ignore patterns
|
|
263
|
+
if (this.shouldIgnore(relativePath, config.ignorePatterns)) {
|
|
264
|
+
continue;
|
|
265
|
+
}
|
|
266
|
+
const stat = (0, fs_1.statSync)(fullPath);
|
|
267
|
+
if (stat.isDirectory() && config.recursive) {
|
|
268
|
+
files.push(...this.findMatchingFiles(fullPath, config, currentDepth + 1));
|
|
269
|
+
}
|
|
270
|
+
else if (stat.isFile()) {
|
|
271
|
+
// Check if file matches any pattern
|
|
272
|
+
if (this.matchesPatterns(relativePath, config.patterns)) {
|
|
273
|
+
files.push(fullPath);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
catch {
|
|
279
|
+
// Directory not accessible, skip
|
|
280
|
+
}
|
|
281
|
+
return files;
|
|
282
|
+
}
|
|
283
|
+
// Check if path should be ignored
|
|
284
|
+
shouldIgnore(path, ignorePatterns) {
|
|
285
|
+
return ignorePatterns.some(pattern => (0, minimatch_1.minimatch)(path, pattern));
|
|
286
|
+
}
|
|
287
|
+
// Check if path matches any of the patterns
|
|
288
|
+
matchesPatterns(path, patterns) {
|
|
289
|
+
return patterns.some(pattern => (0, minimatch_1.minimatch)(path, pattern));
|
|
290
|
+
}
|
|
291
|
+
// Remove duplicate modules
|
|
292
|
+
deduplicateModules(modules) {
|
|
293
|
+
const seen = new Set();
|
|
294
|
+
return modules.filter(module => {
|
|
295
|
+
const key = `${module.name}@${module.version}`;
|
|
296
|
+
if (seen.has(key)) {
|
|
297
|
+
this.discoveryLogger.warn(`Duplicate module found: ${key}`, 'MODULE_DISCOVERY');
|
|
298
|
+
return false;
|
|
299
|
+
}
|
|
300
|
+
seen.add(key);
|
|
301
|
+
return true;
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
// Sort modules based on strategy
|
|
305
|
+
sortModules(modules, strategy) {
|
|
306
|
+
switch (strategy) {
|
|
307
|
+
case 'alphabetical':
|
|
308
|
+
return modules.sort((a, b) => a.name.localeCompare(b.name));
|
|
309
|
+
case 'dependency':
|
|
310
|
+
// Will be handled by resolveDependencyOrder
|
|
311
|
+
return modules;
|
|
312
|
+
case 'custom':
|
|
313
|
+
// Allow custom sorting via module priority (if defined)
|
|
314
|
+
return modules.sort((a, b) => {
|
|
315
|
+
const aPriority = a.config?.priority || 0;
|
|
316
|
+
const bPriority = b.config?.priority || 0;
|
|
317
|
+
return bPriority - aPriority; // Higher priority first
|
|
200
318
|
});
|
|
319
|
+
default:
|
|
320
|
+
return modules;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
// Resolve dependency order using topological sort
|
|
324
|
+
resolveDependencyOrder(modules) {
|
|
325
|
+
const moduleMap = new Map();
|
|
326
|
+
const dependencyGraph = new Map();
|
|
327
|
+
// Build module map and dependency graph
|
|
328
|
+
modules.forEach(module => {
|
|
329
|
+
const key = `${module.name}@${module.version}`;
|
|
330
|
+
moduleMap.set(key, module);
|
|
331
|
+
dependencyGraph.set(key, module.dependencies || []);
|
|
332
|
+
});
|
|
333
|
+
// Topological sort
|
|
334
|
+
const visited = new Set();
|
|
335
|
+
const visiting = new Set();
|
|
336
|
+
const sorted = [];
|
|
337
|
+
const visit = (moduleKey) => {
|
|
338
|
+
if (visiting.has(moduleKey)) {
|
|
339
|
+
throw new Error(`Circular dependency detected involving ${moduleKey}`);
|
|
201
340
|
}
|
|
202
|
-
|
|
203
|
-
|
|
341
|
+
if (visited.has(moduleKey)) {
|
|
342
|
+
return;
|
|
343
|
+
}
|
|
344
|
+
visiting.add(moduleKey);
|
|
345
|
+
const dependencies = dependencyGraph.get(moduleKey) || [];
|
|
346
|
+
dependencies.forEach(dep => {
|
|
347
|
+
// Find the dependency in our modules
|
|
348
|
+
const depModule = Array.from(moduleMap.keys()).find(key => key.startsWith(`${dep.split('@')[0]}@`));
|
|
349
|
+
if (depModule) {
|
|
350
|
+
visit(depModule);
|
|
351
|
+
}
|
|
352
|
+
});
|
|
353
|
+
visiting.delete(moduleKey);
|
|
354
|
+
visited.add(moduleKey);
|
|
355
|
+
const module = moduleMap.get(moduleKey);
|
|
356
|
+
if (module) {
|
|
357
|
+
sorted.push(module);
|
|
358
|
+
}
|
|
359
|
+
};
|
|
360
|
+
// Visit all modules
|
|
361
|
+
Array.from(moduleMap.keys()).forEach(key => {
|
|
362
|
+
if (!visited.has(key)) {
|
|
363
|
+
visit(key);
|
|
364
|
+
}
|
|
365
|
+
});
|
|
366
|
+
return sorted;
|
|
367
|
+
}
|
|
368
|
+
// Enhanced module validation
|
|
369
|
+
validateAdvancedModule(module, _config) {
|
|
370
|
+
// Basic validation
|
|
371
|
+
if (!this.isValidModule(module)) {
|
|
372
|
+
return false;
|
|
373
|
+
}
|
|
374
|
+
// Additional validation can be added here
|
|
375
|
+
// For example, checking module compatibility, version constraints, etc.
|
|
376
|
+
return true;
|
|
377
|
+
}
|
|
378
|
+
// Watch for module changes (for development)
|
|
379
|
+
watchModules(callback) {
|
|
380
|
+
// Use dynamic import for fs to avoid require()
|
|
381
|
+
Promise.resolve().then(() => __importStar(require('fs'))).then(fs => {
|
|
382
|
+
const modulePaths = this.findModuleFiles();
|
|
383
|
+
modulePaths.forEach(path => {
|
|
384
|
+
try {
|
|
385
|
+
fs.watchFile(path, async () => {
|
|
386
|
+
this.discoveryLogger.info(`Module file changed: ${path}`);
|
|
387
|
+
const modules = await this.discoverModules();
|
|
388
|
+
callback(modules);
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
catch {
|
|
392
|
+
// File watching not supported or failed
|
|
393
|
+
}
|
|
394
|
+
});
|
|
395
|
+
})
|
|
396
|
+
.catch(() => {
|
|
397
|
+
// fs module not available
|
|
398
|
+
});
|
|
399
|
+
}
|
|
400
|
+
// Watch modules with advanced configuration
|
|
401
|
+
watchModulesAdvanced(config, callback) {
|
|
402
|
+
if (!config.watchForChanges) {
|
|
403
|
+
return;
|
|
404
|
+
}
|
|
405
|
+
Promise.resolve().then(() => __importStar(require('fs'))).then(fs => {
|
|
406
|
+
const watchedPaths = new Set();
|
|
407
|
+
// Watch all configured paths
|
|
408
|
+
config.paths.forEach(searchPath => {
|
|
409
|
+
const fullPath = (0, path_1.join)(this.baseDir, searchPath);
|
|
410
|
+
try {
|
|
411
|
+
if ((0, fs_1.statSync)(fullPath).isDirectory() && !watchedPaths.has(fullPath)) {
|
|
412
|
+
watchedPaths.add(fullPath);
|
|
413
|
+
const watcher = fs.watch(fullPath, { recursive: config.recursive }, async (eventType, filename) => {
|
|
414
|
+
if (filename && this.matchesPatterns(filename, config.patterns)) {
|
|
415
|
+
this.discoveryLogger.info(`Module file changed: ${filename}`);
|
|
416
|
+
const modules = await this.discoverModulesAdvanced(config);
|
|
417
|
+
callback(modules);
|
|
418
|
+
}
|
|
419
|
+
});
|
|
420
|
+
// Store watcher for cleanup
|
|
421
|
+
this.watchers.push(watcher);
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
catch {
|
|
425
|
+
// Path doesn't exist or not accessible
|
|
426
|
+
}
|
|
427
|
+
});
|
|
428
|
+
})
|
|
429
|
+
.catch(() => {
|
|
430
|
+
// fs module not available
|
|
431
|
+
});
|
|
432
|
+
}
|
|
433
|
+
// Clean up file watchers
|
|
434
|
+
cleanup() {
|
|
435
|
+
this.watchers.forEach(watcher => {
|
|
436
|
+
if (watcher && typeof watcher.close === 'function') {
|
|
437
|
+
watcher.close();
|
|
204
438
|
}
|
|
205
439
|
});
|
|
440
|
+
this.watchers = [];
|
|
206
441
|
}
|
|
207
442
|
}
|
|
208
443
|
exports.ModuleDiscovery = ModuleDiscovery;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-discovery.js","sourceRoot":"","sources":["../../../src/core/modules/auto-discovery.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuMA,kDAMC;AAED,sEAMC;AArND,yCAAyC;AACzC,2BAA2C;AAC3C,+BAAqC;AAGrC,sCAAkD;AAElD,MAAa,eAAe;IAClB,OAAO,CAAS;IAChB,OAAO,CAAmB;IAC1B,eAAe,GAAG,IAAA,8BAAqB,EAAC,kBAAkB,CAAC,CAAC;IAEpE,YAAY,UAAkB,OAAO,CAAC,GAAG,EAAE,EAAE,UAA4B,EAAE;QACzE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG;YACb,OAAO,EAAE,6BAA6B;YACtC,SAAS,EAAE,IAAI;YACf,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;YAC1B,GAAG,OAAO;SACX,CAAC;IACJ,CAAC;IAED,0CAA0C;IAC1C,KAAK,CAAC,eAAe;QACnB,MAAM,OAAO,GAAmB,EAAE,CAAC;QACnC,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAE3C,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;gBACjD,IAAI,MAAM,EAAE,CAAC;oBACX,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACrB,IAAI,CAAC,eAAe,CAAC,IAAI,CACvB,2BAA2B,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,SAAS,UAAU,EAAE,CAC9E,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,8BAA8B,UAAU,EAAE,EAAE,kBAAkB,EAAE;oBACxF,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAC9D,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,sCAAsC;IACtC,KAAK,CAAC,yBAAyB,CAAC,aAAqB,aAAa;QAChE,MAAM,OAAO,GAAmB,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAEhD,IAAI,CAAC;YACH,IAAI,CAAC,IAAA,aAAQ,EAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;gBACtC,OAAO,OAAO,CAAC;YACjB,CAAC;YAED,MAAM,KAAK,GAAG,IAAA,gBAAW,EAAC,QAAQ,CAAC,CAAC;YAEpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBAEtC,IAAI,IAAA,aAAQ,EAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;oBACrC,MAAM,SAAS,GAAG,IAAA,WAAI,EAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;oBAE7C,IAAI,CAAC;wBACH,IAAI,IAAA,aAAQ,EAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;4BACjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;4BAChD,IAAI,MAAM,EAAE,CAAC;gCACX,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gCACrB,IAAI,CAAC,eAAe,CAAC,IAAI,CACvB,qCAAqC,MAAM,CAAC,IAAI,SAAS,IAAI,GAAG,CACjE,CAAC;4BACJ,CAAC;wBACH,CAAC;oBACH,CAAC;oBAAC,MAAM,CAAC;wBACP,yBAAyB;wBACzB,MAAM,UAAU,GAAG,CAAC,WAAW,EAAE,GAAG,IAAI,YAAY,EAAE,WAAW,CAAC,CAAC;wBAEnE,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;4BAC7B,MAAM,OAAO,GAAG,IAAA,WAAI,EAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;4BACpC,IAAI,CAAC;gCACH,IAAI,IAAA,aAAQ,EAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;oCAC/B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;oCAC9C,IAAI,MAAM,EAAE,CAAC;wCACX,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wCACrB,IAAI,CAAC,eAAe,CAAC,IAAI,CACvB,2BAA2B,MAAM,CAAC,IAAI,SAAS,IAAI,IAAI,GAAG,EAAE,CAC7D,CAAC;wCACF,MAAM;oCACR,CAAC;gCACH,CAAC;4BACH,CAAC;4BAAC,MAAM,CAAC;gCACP,kBAAkB;4BACpB,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,uCAAuC;QACzC,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,6CAA6C;IACrC,eAAe;QACrB,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACxC,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,gDAAgD;IACxC,aAAa,CAAC,GAAW,EAAE,KAAe;QAChD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAA,gBAAW,EAAC,GAAG,CAAC,CAAC;YAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACjC,MAAM,IAAI,GAAG,IAAA,aAAQ,EAAC,QAAQ,CAAC,CAAC;gBAEhC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;oBACvB,iDAAiD;oBACjD,IAAI,CAAC,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;wBACxF,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;oBACtC,CAAC;gBACH,CAAC;qBAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;oBACzB,MAAM,GAAG,GAAG,IAAA,cAAO,EAAC,IAAI,CAAC,CAAC;oBAC1B,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC3C,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACvB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,iCAAiC;QACnC,CAAC;IACH,CAAC;IAED,iCAAiC;IACzB,KAAK,CAAC,UAAU,CAAC,UAAkB;QACzC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,yBAAa,UAAU,uCAAC,CAAC;YAExC,gCAAgC;YAChC,MAAM,UAAU,GAAG;gBACjB,MAAM,CAAC,OAAO;gBACd,MAAM,CAAC,MAAM;gBACb,MAAM,CAAC,MAAM;gBACb,MAAM;gBACN,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAC7B,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,CAC3E;aACF,CAAC;YAEF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;gBACnC,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;oBAClC,OAAO,SAAyB,CAAC;gBACnC,CAAC;YACH,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,4BAA6B,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED,kDAAkD;IAC1C,aAAa,CAAC,GAAQ;QAC5B,OAAO,CACL,GAAG;YACH,OAAO,GAAG,KAAK,QAAQ;YACvB,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;YAC5B,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ;YAC/B,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACvD,CAAC,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC/D,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAC5D,CAAC;IACJ,CAAC;IAED,6CAA6C;IAC7C,YAAY,CAAC,QAA2C;QACtD,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACzB,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAE3C,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACzB,IAAI,CAAC;gBACH,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE;oBAC5B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC;oBAC1D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;oBAC7C,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACpB,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,wCAAwC;YAC1C,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AA7LD,0CA6LC;AAED,wBAAwB;AACjB,KAAK,UAAU,mBAAmB,CACvC,OAAgB,EAChB,OAA0B;IAE1B,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACxD,OAAO,SAAS,CAAC,eAAe,EAAE,CAAC;AACrC,CAAC;AAEM,KAAK,UAAU,6BAA6B,CACjD,OAAgB,EAChB,UAAmB;IAEnB,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;IAC/C,OAAO,SAAS,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC;AACzD,CAAC;AAED,8CAA8C;AAC9C,MAAa,cAAc;IACjB,OAAO,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC1C,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IAE1C,QAAQ,CAAC,MAAoB;QAC3B,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,UAAU,CAAC,UAAkB,EAAE,OAAe;QAC5C,MAAM,GAAG,GAAG,GAAG,UAAU,IAAI,OAAO,EAAE,CAAC;QACvC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,QAAQ,CAAC,UAAkB,EAAE,OAAe;QAC1C,MAAM,GAAG,GAAG,GAAG,UAAU,IAAI,OAAO,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,SAAS,CAAC,UAAkB,EAAE,OAAgB;QAC5C,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,IAAI,OAAO,EAAE,CAAC,CAAC;QACtD,CAAC;QAED,8CAA8C;QAC9C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;aAC/C,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC;aACnD,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB;QAElE,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IAED,aAAa;QACX,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,gBAAgB;QACd,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;aACtC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;aAC9C,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;CACF;AA9CD,wCA8CC"}
|
|
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
|
@@ -13,7 +13,9 @@ export declare class Moro extends EventEmitter {
|
|
|
13
13
|
private routes;
|
|
14
14
|
private moduleCounter;
|
|
15
15
|
private loadedModules;
|
|
16
|
+
private lazyModules;
|
|
16
17
|
private routeHandlers;
|
|
18
|
+
private moduleDiscovery?;
|
|
17
19
|
private eventBus;
|
|
18
20
|
private logger;
|
|
19
21
|
private intelligentRouting;
|
|
@@ -79,6 +81,13 @@ export declare class Moro extends EventEmitter {
|
|
|
79
81
|
private rateLimitStore;
|
|
80
82
|
private checkRateLimit;
|
|
81
83
|
private setupDefaultMiddleware;
|
|
84
|
+
private initializeAutoDiscovery;
|
|
85
|
+
private mergeAutoDiscoveryConfig;
|
|
86
|
+
private loadDiscoveredModules;
|
|
87
|
+
private registerLazyModules;
|
|
88
|
+
private loadConditionalModules;
|
|
89
|
+
private shouldLoadModule;
|
|
90
|
+
private handleModuleChanges;
|
|
82
91
|
private autoDiscoverModules;
|
|
83
92
|
private importModule;
|
|
84
93
|
/**
|
package/dist/moro.js
CHANGED
|
@@ -48,8 +48,6 @@ const logger_1 = require("./core/logger");
|
|
|
48
48
|
const middleware_1 = require("./core/middleware");
|
|
49
49
|
const app_integration_1 = require("./core/routing/app-integration");
|
|
50
50
|
const docs_1 = require("./core/docs");
|
|
51
|
-
const fs_1 = require("fs");
|
|
52
|
-
const path_1 = require("path");
|
|
53
51
|
const events_1 = require("events");
|
|
54
52
|
// Configuration System Integration
|
|
55
53
|
const config_1 = require("./core/config");
|
|
@@ -60,7 +58,9 @@ class Moro extends events_1.EventEmitter {
|
|
|
60
58
|
routes = [];
|
|
61
59
|
moduleCounter = 0;
|
|
62
60
|
loadedModules = new Set();
|
|
61
|
+
lazyModules = new Map();
|
|
63
62
|
routeHandlers = {};
|
|
63
|
+
moduleDiscovery; // Store for cleanup
|
|
64
64
|
// Enterprise event system integration
|
|
65
65
|
eventBus;
|
|
66
66
|
// Application logger
|
|
@@ -135,7 +135,12 @@ class Moro extends events_1.EventEmitter {
|
|
|
135
135
|
});
|
|
136
136
|
// Auto-discover modules if enabled
|
|
137
137
|
if (options.autoDiscover !== false) {
|
|
138
|
-
|
|
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
|
+
});
|
|
139
144
|
}
|
|
140
145
|
// Emit initialization event through enterprise event bus
|
|
141
146
|
this.eventBus.emit('framework:initialized', {
|
|
@@ -758,30 +763,172 @@ class Moro extends events_1.EventEmitter {
|
|
|
758
763
|
// Body size limiting
|
|
759
764
|
this.use(http_1.middleware.bodySize({ limit: '10mb' }));
|
|
760
765
|
}
|
|
761
|
-
|
|
766
|
+
// Enhanced auto-discovery initialization
|
|
767
|
+
async initializeAutoDiscovery(options) {
|
|
768
|
+
const { ModuleDiscovery } = await Promise.resolve().then(() => __importStar(require('./core/modules/auto-discovery')));
|
|
769
|
+
// Merge auto-discovery configuration
|
|
770
|
+
const autoDiscoveryConfig = this.mergeAutoDiscoveryConfig(options);
|
|
771
|
+
if (!autoDiscoveryConfig.enabled) {
|
|
772
|
+
return;
|
|
773
|
+
}
|
|
774
|
+
this.moduleDiscovery = new ModuleDiscovery(process.cwd());
|
|
762
775
|
try {
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
776
|
+
// Discover modules based on configuration
|
|
777
|
+
const modules = await this.moduleDiscovery.discoverModulesAdvanced(autoDiscoveryConfig);
|
|
778
|
+
// Load modules based on strategy
|
|
779
|
+
await this.loadDiscoveredModules(modules, autoDiscoveryConfig);
|
|
780
|
+
// Setup file watching if enabled
|
|
781
|
+
if (autoDiscoveryConfig.watchForChanges) {
|
|
782
|
+
this.moduleDiscovery.watchModulesAdvanced(autoDiscoveryConfig, async (updatedModules) => {
|
|
783
|
+
await this.handleModuleChanges(updatedModules);
|
|
784
|
+
});
|
|
785
|
+
}
|
|
786
|
+
this.logger.info(`Auto-discovery completed: ${modules.length} modules loaded`, 'ModuleDiscovery');
|
|
787
|
+
}
|
|
788
|
+
catch (error) {
|
|
789
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
790
|
+
if (autoDiscoveryConfig.failOnError) {
|
|
791
|
+
throw new Error(`Module auto-discovery failed: ${errorMsg}`);
|
|
792
|
+
}
|
|
793
|
+
else {
|
|
794
|
+
this.logger.warn(`Module auto-discovery failed: ${errorMsg}`, 'ModuleDiscovery');
|
|
795
|
+
}
|
|
796
|
+
}
|
|
797
|
+
}
|
|
798
|
+
// Merge auto-discovery configuration from multiple sources
|
|
799
|
+
mergeAutoDiscoveryConfig(options) {
|
|
800
|
+
const defaultConfig = this.config.modules.autoDiscovery;
|
|
801
|
+
// Handle legacy modulesPath option
|
|
802
|
+
if (options.modulesPath && !options.autoDiscover) {
|
|
803
|
+
return {
|
|
804
|
+
...defaultConfig,
|
|
805
|
+
paths: [options.modulesPath],
|
|
806
|
+
};
|
|
807
|
+
}
|
|
808
|
+
// Handle boolean autoDiscover option
|
|
809
|
+
if (typeof options.autoDiscover === 'boolean') {
|
|
810
|
+
return {
|
|
811
|
+
...defaultConfig,
|
|
812
|
+
enabled: options.autoDiscover,
|
|
813
|
+
};
|
|
814
|
+
}
|
|
815
|
+
// Handle object autoDiscover option
|
|
816
|
+
if (typeof options.autoDiscover === 'object') {
|
|
817
|
+
return {
|
|
818
|
+
...defaultConfig,
|
|
819
|
+
...options.autoDiscover,
|
|
820
|
+
};
|
|
821
|
+
}
|
|
822
|
+
return defaultConfig;
|
|
823
|
+
}
|
|
824
|
+
// Load discovered modules based on strategy
|
|
825
|
+
async loadDiscoveredModules(modules, config) {
|
|
826
|
+
switch (config.loadingStrategy) {
|
|
827
|
+
case 'eager':
|
|
828
|
+
// Load all modules immediately
|
|
829
|
+
for (const module of modules) {
|
|
830
|
+
await this.loadModule(module);
|
|
831
|
+
}
|
|
832
|
+
break;
|
|
833
|
+
case 'lazy':
|
|
834
|
+
// Register modules for lazy loading
|
|
835
|
+
this.registerLazyModules(modules);
|
|
836
|
+
break;
|
|
837
|
+
case 'conditional':
|
|
838
|
+
// Load modules based on conditions
|
|
839
|
+
await this.loadConditionalModules(modules);
|
|
840
|
+
break;
|
|
841
|
+
default:
|
|
842
|
+
// Default to eager loading
|
|
843
|
+
for (const module of modules) {
|
|
844
|
+
await this.loadModule(module);
|
|
778
845
|
}
|
|
779
|
-
});
|
|
780
846
|
}
|
|
781
|
-
|
|
782
|
-
|
|
847
|
+
}
|
|
848
|
+
// Register modules for lazy loading
|
|
849
|
+
registerLazyModules(modules) {
|
|
850
|
+
modules.forEach(module => {
|
|
851
|
+
// Store module for lazy loading when first route is accessed
|
|
852
|
+
this.lazyModules.set(module.name, module);
|
|
853
|
+
// Register placeholder routes that trigger lazy loading
|
|
854
|
+
if (module.routes) {
|
|
855
|
+
module.routes.forEach(route => {
|
|
856
|
+
const basePath = `/api/v${module.version}/${module.name}`;
|
|
857
|
+
const fullPath = `${basePath}${route.path}`;
|
|
858
|
+
// Note: Lazy loading will be implemented when route is accessed
|
|
859
|
+
// For now, we'll store the module for later loading
|
|
860
|
+
this.logger.debug(`Registered lazy route: ${route.method} ${fullPath}`, 'ModuleDiscovery');
|
|
861
|
+
});
|
|
862
|
+
}
|
|
863
|
+
});
|
|
864
|
+
this.logger.info(`Registered ${modules.length} modules for lazy loading`, 'ModuleDiscovery');
|
|
865
|
+
}
|
|
866
|
+
// Load modules conditionally based on environment or configuration
|
|
867
|
+
async loadConditionalModules(modules) {
|
|
868
|
+
for (const module of modules) {
|
|
869
|
+
const shouldLoad = this.shouldLoadModule(module);
|
|
870
|
+
if (shouldLoad) {
|
|
871
|
+
await this.loadModule(module);
|
|
872
|
+
}
|
|
873
|
+
else {
|
|
874
|
+
this.logger.debug(`Skipping module ${module.name} due to conditions`, 'ModuleDiscovery');
|
|
875
|
+
}
|
|
783
876
|
}
|
|
784
877
|
}
|
|
878
|
+
// Determine if a module should be loaded based on conditions
|
|
879
|
+
shouldLoadModule(module) {
|
|
880
|
+
const moduleConfig = module.config;
|
|
881
|
+
// Check environment conditions
|
|
882
|
+
if (moduleConfig?.conditions?.environment) {
|
|
883
|
+
const requiredEnv = moduleConfig.conditions.environment;
|
|
884
|
+
const currentEnv = process.env.NODE_ENV || 'development';
|
|
885
|
+
if (Array.isArray(requiredEnv)) {
|
|
886
|
+
if (!requiredEnv.includes(currentEnv)) {
|
|
887
|
+
return false;
|
|
888
|
+
}
|
|
889
|
+
}
|
|
890
|
+
else if (requiredEnv !== currentEnv) {
|
|
891
|
+
return false;
|
|
892
|
+
}
|
|
893
|
+
}
|
|
894
|
+
// Check feature flags
|
|
895
|
+
if (moduleConfig?.conditions?.features) {
|
|
896
|
+
const requiredFeatures = moduleConfig.conditions.features;
|
|
897
|
+
for (const feature of requiredFeatures) {
|
|
898
|
+
if (!process.env[`FEATURE_${feature.toUpperCase()}`]) {
|
|
899
|
+
return false;
|
|
900
|
+
}
|
|
901
|
+
}
|
|
902
|
+
}
|
|
903
|
+
// Check custom conditions
|
|
904
|
+
if (moduleConfig?.conditions?.custom) {
|
|
905
|
+
const customCondition = moduleConfig.conditions.custom;
|
|
906
|
+
if (typeof customCondition === 'function') {
|
|
907
|
+
return customCondition();
|
|
908
|
+
}
|
|
909
|
+
}
|
|
910
|
+
return true;
|
|
911
|
+
}
|
|
912
|
+
// Handle module changes during development
|
|
913
|
+
async handleModuleChanges(modules) {
|
|
914
|
+
this.logger.info('Module changes detected, reloading...', 'ModuleDiscovery');
|
|
915
|
+
// Unload existing modules (if supported)
|
|
916
|
+
// For now, just log the change
|
|
917
|
+
this.eventBus.emit('modules:changed', {
|
|
918
|
+
modules: modules.map(m => ({ name: m.name, version: m.version })),
|
|
919
|
+
timestamp: new Date(),
|
|
920
|
+
});
|
|
921
|
+
}
|
|
922
|
+
// Legacy method for backward compatibility
|
|
923
|
+
autoDiscoverModules(modulesPath) {
|
|
924
|
+
// Redirect to new system
|
|
925
|
+
this.initializeAutoDiscovery({
|
|
926
|
+
autoDiscover: {
|
|
927
|
+
enabled: true,
|
|
928
|
+
paths: [modulesPath],
|
|
929
|
+
},
|
|
930
|
+
});
|
|
931
|
+
}
|
|
785
932
|
async importModule(modulePath) {
|
|
786
933
|
const module = await Promise.resolve(`${modulePath}`).then(s => __importStar(require(s)));
|
|
787
934
|
return module.default || module;
|
|
@@ -1034,6 +1181,15 @@ class Moro extends events_1.EventEmitter {
|
|
|
1034
1181
|
this.logger.warn('Force closing HTTP server due to timeout');
|
|
1035
1182
|
}
|
|
1036
1183
|
}
|
|
1184
|
+
// Clean up module discovery watchers
|
|
1185
|
+
if (this.moduleDiscovery && typeof this.moduleDiscovery.cleanup === 'function') {
|
|
1186
|
+
try {
|
|
1187
|
+
this.moduleDiscovery.cleanup();
|
|
1188
|
+
}
|
|
1189
|
+
catch (error) {
|
|
1190
|
+
// Ignore cleanup errors
|
|
1191
|
+
}
|
|
1192
|
+
}
|
|
1037
1193
|
// Clean up event listeners
|
|
1038
1194
|
try {
|
|
1039
1195
|
this.eventBus.removeAllListeners();
|