/
Dante
/
node-core
Обзор
Документация
Войти
/
Dante
/
node-core
Код
Запросы
0
Задачи
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/index.ts
52 строки
2 KB
Александр Данилюк
add
24 сен 2024, 12:59
24 сен 2024, 12:59
9eaeea8
Код
Авторство
О чём код?
//import sayHello from 'lib-git' import EventEmitter from "node:events"; import { ConfigService } from "./services/config.service"; import { ConfigApp } from "./interfaces/config-app.interface"; const eventBus = new EventEmitter(); const MODULE_PREFIX = 'github:Nerabio'; export interface Config { [key: string]: string } type MduleConfig = Config | ConfigApp; export interface DynamicModule { onInit(config: MduleConfig, eventBus: EventEmitter): Promise<void> ; run(): Promise<void>; info(): Promise<{name: string, version: string}>; onDestroy(): Promise<void>; } const config = new ConfigService().getConfig(); function getModules(prefix: string): string[]{ const modules = Object.entries<[string, string]>(require('../package.json').dependencies) ?? []; return modules.filter((module) => module[1].includes(prefix)).map((m) => m[0]); } async function loadModule(): Promise<void> { const modules = getModules(MODULE_PREFIX); modules.forEach(async (moduleName) =>{ const cointainer = await import(moduleName); const dynamicModule: DynamicModule = new cointainer.Module; await dynamicModule.onInit( config, eventBus); await dynamicModule.run(); const moduleInfo = await dynamicModule.info(); console.log('Load module -> ', moduleInfo); }) }; eventBus.on('set_url', function(url: string){ console.log('eventBus --> set_url --> ()', url); }); eventBus.on('invalid_url', function(){ console.log('eventBus --> invalid_url --> ()'); }); (async () => await loadModule())();