UNPKG

@clawject/di

Version:

<p align="center"> <a href="https://clawject.com/" target="_blank"><img src="https://clawject.com/img/logo.svg" align="center" alt="Clawject Logo" width="120" height="120" /></a> </p>

43 lines (42 loc) 2.17 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ClawjectContainer = void 0; const ApplicationBeanFactory_1 = require("./ApplicationBeanFactory"); const ApplicationConfigurationFactory_1 = require("./ApplicationConfigurationFactory"); const MetadataStorage_1 = require("../MetadataStorage"); const RuntimeErrors_1 = require("../api/RuntimeErrors"); const ScopeManager_1 = require("./ScopeManager"); class ClawjectContainer { constructor(applicationClass, applicationClassConstructorParameters, beanProcessors, scopeRegister) { this.applicationClass = applicationClass; this.applicationClassConstructorParameters = applicationClassConstructorParameters; this.beanProcessors = beanProcessors; this.scopeRegister = scopeRegister; this.applicationConfigurationFactory = new ApplicationConfigurationFactory_1.ApplicationConfigurationFactory(); this.applicationBeanFactory = new ApplicationBeanFactory_1.ApplicationBeanFactory(this.applicationConfigurationFactory, this.beanProcessors, this.scopeRegister); this.scopeManager = new ScopeManager_1.ScopeManager(this.applicationBeanFactory); } async init() { const applicationMetadata = MetadataStorage_1.MetadataStorage.getApplicationMetadata(this.applicationClass); if (applicationMetadata === null) { throw new RuntimeErrors_1.RuntimeErrors.NoClassMetadataFoundError('No application metadata found'); } await this.applicationConfigurationFactory.init(this.applicationClass, this.applicationClassConstructorParameters); await this.applicationBeanFactory.init(applicationMetadata); this.scopeManager.init(); } async postInit() { await this.applicationBeanFactory.postInit(); } async destroy() { await this.applicationBeanFactory.destroy(); this.scopeManager.destroy(); } getExposedBean(beanName) { return this.applicationBeanFactory.getExposedBean(beanName); } getExposedBeans() { return this.applicationBeanFactory.getExposedBeans(); } } exports.ClawjectContainer = ClawjectContainer;