()
| 2523 | }; |
| 2524 | |
| 2525 | const aggregatePlugins = () => { |
| 2526 | const pluginMap = new Map(); |
| 2527 | const priority = { 'plugins-dir': 3, 'plugin-dir': 2, 'json-config': 1 }; |
| 2528 | |
| 2529 | for (const dirInfo of getPluginDirs()) { |
| 2530 | const plugins = loadPluginsFromDir(dirInfo); |
| 2531 | for (const plugin of plugins) { |
| 2532 | if (!pluginMap.has(plugin.name)) { |
| 2533 | pluginMap.set(plugin.name, plugin); |
| 2534 | } else { |
| 2535 | const existing = pluginMap.get(plugin.name); |
| 2536 | if (priority[plugin.source] > priority[existing.source]) { |
| 2537 | pluginMap.set(plugin.name, plugin); |
| 2538 | } |
| 2539 | } |
| 2540 | } |
| 2541 | } |
| 2542 | |
| 2543 | const aggregated = loadAggregatedConfig(); |
| 2544 | if (aggregated.plugins) { |
| 2545 | for (const plugin of aggregated.plugins) { |
| 2546 | if (!pluginMap.has(plugin.name)) { |
| 2547 | pluginMap.set(plugin.name, { |
| 2548 | ...plugin, |
| 2549 | source: 'json-config' |
| 2550 | }); |
| 2551 | } |
| 2552 | } |
| 2553 | } |
| 2554 | |
| 2555 | return Array.from(pluginMap.values()); |
| 2556 | }; |
| 2557 | |
| 2558 | app.get('/api/plugins', (req, res) => { |
| 2559 | try { |
no test coverage detected