From 4b0fd373a425f141e536f31fbd5a73aa19ec4260 Mon Sep 17 00:00:00 2001 From: Raphael Panic Date: Thu, 26 Mar 2026 14:08:50 +0100 Subject: [PATCH 1/2] Delayed dependency factory usage to after registration of all dependencies --- packages/common/src/config/ModuleContainer.ts | 38 +++++++++++-------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/packages/common/src/config/ModuleContainer.ts b/packages/common/src/config/ModuleContainer.ts index 7424759c9..d6158897f 100644 --- a/packages/common/src/config/ModuleContainer.ts +++ b/packages/common/src/config/ModuleContainer.ts @@ -220,6 +220,12 @@ export class ModuleContainer return Object.prototype.hasOwnProperty.call(modules, moduleName); } + private isValidModuleNameTuple( + module: [string, BaseModuleType] + ): module is [StringKeyOf, BaseModuleType] { + return Object.prototype.hasOwnProperty.call(this.definition, module[0]); + } + public assertContainerInitialized( container: DependencyContainer | undefined ): asserts container is DependencyContainer { @@ -246,26 +252,26 @@ export class ModuleContainer * @param modules */ protected registerModules(modules: Modules) { - Object.keys(modules).forEach((moduleName) => { - if (Object.prototype.hasOwnProperty.call(modules, moduleName)) { - this.assertIsValidModuleName(moduleName); - - log.debug(`Registering module: ${moduleName}`); + const moduleClasses = Object.entries(modules).filter( + this.isValidModuleNameTuple + ); - const useClass = modules[moduleName]; + moduleClasses.forEach(([moduleName, useClass]) => { + log.debug(`Registering module: ${moduleName}`); - this.container.register( - moduleName, - { useClass }, - { lifecycle: Lifecycle.ContainerScoped } - ); - this.onAfterModuleResolution(moduleName); + this.container.register( + moduleName, + { useClass }, + { lifecycle: Lifecycle.ContainerScoped } + ); + this.onAfterModuleResolution(moduleName); - this.registerAliases(moduleName, useClass); + this.registerAliases(moduleName, useClass); + }); - if (this.isDependencyFactory(useClass)) { - this.useDependencyFactory(useClass, moduleName); - } + moduleClasses.forEach(([moduleName, clazz]) => { + if (this.isDependencyFactory(clazz)) { + this.useDependencyFactory(clazz, moduleName); } }); } From 5c74b7e20992adddc010050492792c2b2934fb42 Mon Sep 17 00:00:00 2001 From: Raphael Panic Date: Thu, 26 Mar 2026 14:58:44 +0100 Subject: [PATCH 2/2] Fixed function this reference issue --- packages/common/src/config/ModuleContainer.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/common/src/config/ModuleContainer.ts b/packages/common/src/config/ModuleContainer.ts index d6158897f..9041504ba 100644 --- a/packages/common/src/config/ModuleContainer.ts +++ b/packages/common/src/config/ModuleContainer.ts @@ -253,7 +253,7 @@ export class ModuleContainer */ protected registerModules(modules: Modules) { const moduleClasses = Object.entries(modules).filter( - this.isValidModuleNameTuple + this.isValidModuleNameTuple.bind(this) ); moduleClasses.forEach(([moduleName, useClass]) => {