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>

57 lines (56 loc) 2.53 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ClawjectFactory = exports.ClawjectFactoryStatic = void 0; const ClawjectContainer_1 = require("../container/ClawjectContainer"); const Utils_1 = require("../Utils"); const ClawjectApplicationContextImpl_1 = require("../ClawjectApplicationContextImpl"); const InternalScopeRegister_1 = require("../scope/InternalScopeRegister"); /** * It's a factory class that creates a {@link ClawjectApplicationContext} instance. * * @docs https://clawject.com/docs/fundamentals/clawject-factory * * @public * */ class ClawjectFactoryStatic { constructor(beanProcessors, scopes) { this.beanProcessors = beanProcessors; this.scopes = scopes; this.scopeRegister = new InternalScopeRegister_1.InternalScopeRegister(scopes); } async createApplicationContext(clawjectApplication, constructorParameters) { const resolvedConstructorParameters = await Utils_1.Utils.getResolvedConstructorParameters(constructorParameters); const container = new ClawjectContainer_1.ClawjectContainer(clawjectApplication, resolvedConstructorParameters, this.beanProcessors, this.scopeRegister); await container.init(); await container.postInit(); return new ClawjectApplicationContextImpl_1.ClawjectApplicationContextImpl(container); } /** * Creates new instance of {@link ClawjectFactoryStatic} with assigned {@link BeanProcessor}. * */ withBeanProcessor(beanProcessor) { return new ClawjectFactoryStatic([...this.beanProcessors, beanProcessor], this.scopes); } /** * Creates new instance of {@link ClawjectFactoryStatic} with assigned {@link Scope}. * */ withScope(scopeName, scope) { return new ClawjectFactoryStatic(this.beanProcessors, new Map([...this.scopes, [scopeName, scope]])); } /** * Creates new instance of {@link ClawjectFactoryStatic} with assigned scope alias. * */ withScopeAlias(from, to) { const instance = new ClawjectFactoryStatic(this.beanProcessors, this.scopes); instance.scopeRegister.registerScopeAlias(from, to); return instance; } } exports.ClawjectFactoryStatic = ClawjectFactoryStatic; ClawjectFactoryStatic.instance = new ClawjectFactoryStatic([], InternalScopeRegister_1.InternalScopeRegister.global.scopes); /** * Use ClawjectFactory to create an application context instance. * * @public * */ exports.ClawjectFactory = ClawjectFactoryStatic.instance;