import {ConfigurationReader, DependencyManager, JSONConfigurationLoader, Type} from '../src/di'; import type {IMessageQueue} from '../src/example/IMessageQueue'; async function main() { const moduleLoader = async (path: string) => await import(`../${path}.ts`); const dependencyManager = new DependencyManager(moduleLoader); const configurationReader = new ConfigurationReader(dependencyManager, new JSONConfigurationLoader()); await configurationReader.load('./examples/di.json'); // Instantiate all eager types const eagerTypes = await dependencyManager.getEagerTypes(); for (const type of eagerTypes) { await dependencyManager.instantiateType(type); } // Resolve the MessageQueue const messageQueueType = new Type('src/example/IMessageQueue'); const messageQueue = await dependencyManager.instantiateType(messageQueueType); messageQueue.subscribe('test-topic', (message: string) => { console.log('[MessageQueue] [Listener] Received message:', message); }); // Use the service await messageQueue.publish('test-topic', 'Hello, DI!'); console.log('[MessageQueue] [Publisher] Message published successfully!'); } main().catch(console.error);