@@ -6,17 +6,22 @@ import {
66} from './dependencies' ;
77import { ClassBuilder } from './util' ;
88
9- var manager = null ;
9+ var manager = new Map ( ) ;
1010
1111class DependencyResolver {
12- constructor ( ) {
13- if ( manager ) {
14- return manager ;
12+ constructor ( name ) {
13+ this . name = name ;
14+ const instance = manager . get ( name ) ;
15+
16+ if ( instance ) {
17+ return instance ;
1518 }
19+
1620 this . dependencyManager = new DependencyManager ( ) ;
1721 this . dependencyInjector = new DependencyInjector ( this . dependencyManager ) ;
1822 this . created = false ;
19- manager = this ;
23+
24+ manager . set ( this . name , this ) ;
2025 }
2126
2227 create ( servicesManager , parametersManager ) {
@@ -27,6 +32,9 @@ class DependencyResolver {
2732
2833 this . dependencyManager = this . dependencyManager . create ( servicesManager , parametersManager ) ;
2934 this . created = true ;
35+
36+
37+ manager . set ( this . name , this ) ;
3038 return this ;
3139 }
3240
@@ -38,6 +46,8 @@ class DependencyResolver {
3846 this . dependencyManager = this . dependencyManager . initializeParameters ( parameters ) ;
3947 services = this . dependencyInjector . injectParameters ( services ) ;
4048 this . dependencyManager = this . dependencyManager . initializeServices ( services ) ;
49+
50+ manager . set ( this . name , this ) ;
4151 return this ;
4252 }
4353
@@ -49,6 +59,31 @@ class DependencyResolver {
4959 getParameter ( key ) {
5060 return this . dependencyManager . getParameter ( key ) ;
5161 }
62+
63+ terminate ( ) {
64+ this . dependencyManager . terminate ( ) ;
65+ return this ;
66+ }
67+
68+ getDependencyManager ( ) {
69+ return this . dependencyManager ;
70+ }
71+
72+ isCreated ( ) {
73+ return this . created ;
74+ }
75+
76+ getName ( ) {
77+ return this . name ;
78+ }
5279}
5380
54- export default new DependencyResolver ( ) ;
81+ export default new DependencyResolver ( ) ;
82+
83+ export function createDependencyResolver ( name ) {
84+ if ( manager . get ( name ) ) {
85+ return manager . get ( name ) ;
86+ }
87+
88+ return new DependencyResolver ( name )
89+ } ;
0 commit comments