@@ -263,6 +263,10 @@ export class ModuleContainer<
263
263
this . onAfterModuleResolution ( moduleName ) ;
264
264
265
265
this . registerAliases ( moduleName , useClass ) ;
266
+
267
+ if ( this . isDependencyFactory ( useClass ) ) {
268
+ this . useDependencyFactory ( useClass ) ;
269
+ }
266
270
}
267
271
} ) ;
268
272
}
@@ -285,16 +289,6 @@ export class ModuleContainer<
285
289
} ) ;
286
290
}
287
291
288
- protected registerClasses ( modules : Record < string , TypedClass < unknown > > ) {
289
- Object . entries ( modules ) . forEach ( ( [ moduleName , useClass ] ) => {
290
- this . container . register (
291
- moduleName ,
292
- { useClass } ,
293
- { lifecycle : Lifecycle . ContainerScoped }
294
- ) ;
295
- } ) ;
296
- }
297
-
298
292
/**
299
293
* Provide additional configuration after the ModuleContainer was created.
300
294
*
@@ -403,14 +397,18 @@ export class ModuleContainer<
403
397
protected useDependencyFactory ( factory : DependencyFactory ) {
404
398
const dependencies = factory . dependencies ( ) ;
405
399
400
+ // eslint-disable-next-line sonarjs/cognitive-complexity
406
401
Object . entries ( dependencies ) . forEach ( ( [ rawKey , declaration ] ) => {
407
402
const key = rawKey . charAt ( 0 ) . toUpperCase ( ) + rawKey . slice ( 1 ) ;
408
403
409
404
if (
410
405
! this . container . isRegistered ( key ) ||
411
406
declaration . forceOverwrite === true
412
407
) {
413
- if ( this . container . isRegistered ( key ) && declaration . forceOverwrite ) {
408
+ if (
409
+ this . container . isRegistered ( key ) &&
410
+ ( declaration ?. forceOverwrite ?? false )
411
+ ) {
414
412
log . warn (
415
413
`You are trying to overwrite dependency ${ key } , which is already registered. This is currently not supported. Try to define your dependency earlier.`
416
414
) ;
@@ -434,6 +432,11 @@ export class ModuleContainer<
434
432
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
435
433
declaration . useClass as TypedClass < unknown >
436
434
) ;
435
+
436
+ // Register static dependencies
437
+ if ( this . isDependencyFactory ( declaration . useClass ) ) {
438
+ this . useDependencyFactory ( declaration . useClass ) ;
439
+ }
437
440
} else if ( isTokenProvider ( declaration ) ) {
438
441
this . container . register ( key , declaration , {
439
442
lifecycle : Lifecycle . Singleton ,
0 commit comments