@@ -109,18 +109,6 @@ export type RecursivePartial<T> = {
109109 [ Key in keyof T ] ?: Partial < T [ Key ] > ;
110110} ;
111111
112- /**
113- * Parameters required when creating a module container instance
114- */
115- export interface ModuleContainerDefinition < Modules extends ModulesRecord > {
116- modules : Modules ;
117- // config is optional, as it may be provided by the parent/wrapper class
118- /**
119- * @deprecated
120- */
121- config ?: ModulesConfig < Modules > ;
122- }
123-
124112// Removes all keys with a "never" value from an object
125113export type FilterNeverValues < Type extends Record < string , unknown > > = {
126114 [ Key in keyof Type as Type [ Key ] extends never ? never : Key ] : Type [ Key ] ;
@@ -166,15 +154,15 @@ export class ModuleContainer<Modules extends ModulesRecord>
166154
167155 private eventEmitterProxy : EventEmitterProxy < Modules > | undefined = undefined ;
168156
169- public constructor ( public definition : ModuleContainerDefinition < Modules > ) {
157+ public constructor ( public definition : Modules ) {
170158 super ( ) ;
171159 }
172160
173161 /**
174162 * @returns list of module names
175163 */
176164 public get moduleNames ( ) {
177- return Object . keys ( this . definition . modules ) ;
165+ return Object . keys ( this . definition ) ;
178166 }
179167
180168 /**
@@ -219,7 +207,7 @@ export class ModuleContainer<Modules extends ModulesRecord>
219207 public assertIsValidModuleName (
220208 moduleName : string
221209 ) : asserts moduleName is StringKeyOf < Modules > {
222- if ( ! this . isValidModuleName ( this . definition . modules , moduleName ) ) {
210+ if ( ! this . isValidModuleName ( this . definition , moduleName ) ) {
223211 throw errors . onlyValidModuleNames ( moduleName ) ;
224212 }
225213 }
@@ -349,13 +337,20 @@ export class ModuleContainer<Modules extends ModulesRecord>
349337
350338 public resolveOrFail < ModuleType > (
351339 moduleName : string ,
352- moduleType : TypedClass < ModuleType >
340+ moduleType ? : TypedClass < ModuleType >
353341 ) {
342+ if ( ! this . container . isRegistered ( moduleName ) ) {
343+ throw new Error ( `Dependency with token ${ moduleName } not registered` ) ;
344+ }
345+
354346 const instance = this . container . resolve < ModuleType > ( moduleName ) ;
355- const isValidModuleInstance = instance instanceof moduleType ;
356347
357- if ( ! isValidModuleInstance ) {
358- throw errors . validModuleInstance ( moduleName , moduleType . name ) ;
348+ if ( moduleType !== undefined ) {
349+ const isValidModuleInstance = instance instanceof moduleType ;
350+
351+ if ( ! isValidModuleInstance ) {
352+ throw errors . validModuleInstance ( moduleName , moduleType . name ) ;
353+ }
359354 }
360355
361356 return instance ;
@@ -501,7 +496,7 @@ export class ModuleContainer<Modules extends ModulesRecord>
501496 } ) ;
502497
503498 // register all provided modules when the container is created
504- this . registerModules ( this . definition . modules ) ;
499+ this . registerModules ( this . definition ) ;
505500 this . container . register ( "ParentContainer" , { useValue : this } ) ;
506501 }
507502
0 commit comments