@clawject/di
Advanced tools
Comparing version 1.1.1 to 1.1.2
@@ -145,5 +145,5 @@ /** | ||
private scopes; | ||
private readonly scopeRegister; | ||
private constructor(); | ||
static readonly instance: ClawjectFactoryStatic; | ||
private readonly scopeRegister; | ||
/** | ||
@@ -150,0 +150,0 @@ * Creates a {@link ClawjectApplicationContext} instance. |
{ | ||
"name": "@clawject/di", | ||
"version": "1.1.1", | ||
"version": "1.1.2", | ||
"keywords": [ | ||
@@ -31,3 +31,3 @@ "dependency-injection", | ||
"dependencies": { | ||
"@clawject/core": "1.1.1" | ||
"@clawject/core": "1.1.2" | ||
}, | ||
@@ -34,0 +34,0 @@ "devDependencies": { |
@@ -19,3 +19,3 @@ "use strict"; | ||
this.scopes = scopes; | ||
this.scopeRegister = new InternalScopeRegister_1.InternalScopeRegister(this.scopes); | ||
this.scopeRegister = new InternalScopeRegister_1.InternalScopeRegister(scopes); | ||
} | ||
@@ -22,0 +22,0 @@ async createApplicationContext(clawjectApplication, constructorParameters) { |
@@ -26,3 +26,3 @@ "use strict"; | ||
}; | ||
this.name = `${parentConfiguration.index}_${id}_${beanMetadata.qualifiedName}`; | ||
this.name = `${parentConfiguration.id}_${id}_${beanMetadata.qualifiedName}`; | ||
} | ||
@@ -29,0 +29,0 @@ init(objectFactory) { |
@@ -19,5 +19,5 @@ "use strict"; | ||
this.applicationBeans = []; | ||
this.configurationIndexToBeanClassPropertyToApplicationBean = new Map(); | ||
this.applicationBeanFinder = new ApplicationBeanFinder_1.ApplicationBeanFinder(this.configurationIndexToBeanClassPropertyToApplicationBean); | ||
this.configurationIdToBeanClassPropertyToApplicationBean = new Map(); | ||
this.scopeToScopedApplicationBeans = new Map(); | ||
this.applicationBeanFinder = new ApplicationBeanFinder_1.ApplicationBeanFinder(this.configurationIdToBeanClassPropertyToApplicationBean, applicationConfigurationFactory); | ||
} | ||
@@ -81,4 +81,4 @@ async init(applicationMetadata) { | ||
} | ||
const configurationIndexToBeanClassPropertyToApplicationBean = new Map(); | ||
this.configurationIndexToBeanClassPropertyToApplicationBean.set(applicationConfiguration.index, configurationIndexToBeanClassPropertyToApplicationBean); | ||
const beanClassPropertyToApplicationBean = new Map(); | ||
this.configurationIdToBeanClassPropertyToApplicationBean.set(applicationConfiguration.id, beanClassPropertyToApplicationBean); | ||
const beanNameToDependenciesMetadata = new Map(Object.values(beanDependenciesMetadataByConfiguration.map(it => { | ||
@@ -103,3 +103,3 @@ const applicationBeanDependencies = it.dependencies | ||
const applicationBean = new ApplicationBean_1.ApplicationBean(BeanIdProvider_1.BeanIdProvider.getAndInc(), applicationConfiguration, beanClassProperty, beanMetadata, beanDependenciesMetadata, beanClassConstructor, this.scopeRegister); | ||
configurationIndexToBeanClassPropertyToApplicationBean.set(beanClassProperty, applicationBean); | ||
beanClassPropertyToApplicationBean.set(beanClassProperty, applicationBean); | ||
this.applicationBeans.push(applicationBean); | ||
@@ -106,0 +106,0 @@ if (!applicationBean.isLifecycleFunction) { |
@@ -6,16 +6,18 @@ "use strict"; | ||
class ApplicationBeanFinder { | ||
constructor(configurationIndexToBeanClassPropertyToApplicationBean) { | ||
this.configurationIndexToBeanClassPropertyToApplicationBean = configurationIndexToBeanClassPropertyToApplicationBean; | ||
constructor(configurationIdToBeanClassPropertyToApplicationBean, applicationConfigurationFactory) { | ||
this.configurationIdToBeanClassPropertyToApplicationBean = configurationIdToBeanClassPropertyToApplicationBean; | ||
this.applicationConfigurationFactory = applicationConfigurationFactory; | ||
} | ||
find(configurationIndex, beanClassProperty) { | ||
const configurationIndexToBeanClassPropertyToApplicationBean = this.configurationIndexToBeanClassPropertyToApplicationBean.get(configurationIndex); | ||
if (!configurationIndexToBeanClassPropertyToApplicationBean) { | ||
const configuration = this.applicationConfigurationFactory.getConfigurationByIndex(configurationIndex); | ||
const beanClassPropertyToApplicationBean = this.configurationIdToBeanClassPropertyToApplicationBean.get(configuration.id); | ||
if (!beanClassPropertyToApplicationBean) { | ||
throw new RuntimeErrors_1.RuntimeErrors.IllegalStateError('No instantiated configuration found by index'); | ||
} | ||
if (!configurationIndexToBeanClassPropertyToApplicationBean.has(beanClassProperty)) { | ||
if (!beanClassPropertyToApplicationBean.has(beanClassProperty)) { | ||
throw new RuntimeErrors_1.RuntimeErrors.IllegalStateError('No application bean found by class property'); | ||
} | ||
return configurationIndexToBeanClassPropertyToApplicationBean.get(beanClassProperty); | ||
return beanClassPropertyToApplicationBean.get(beanClassProperty); | ||
} | ||
} | ||
exports.ApplicationBeanFinder = ApplicationBeanFinder; |
@@ -13,2 +13,8 @@ "use strict"; | ||
} | ||
get id() { | ||
if (this._id === null) { | ||
throw new RuntimeErrors_1.RuntimeErrors.IllegalStateError('Id not initialized in application configuration'); | ||
} | ||
return this._id; | ||
} | ||
constructor(classConstructor, applicationClassConstructorParameters) { | ||
@@ -19,5 +25,7 @@ this.classConstructor = classConstructor; | ||
this._index = null; | ||
this._id = null; | ||
} | ||
init(index) { | ||
init(index, id) { | ||
this._index = index; | ||
this._id = id; | ||
} | ||
@@ -24,0 +32,0 @@ get metadata() { |
@@ -9,6 +9,10 @@ "use strict"; | ||
this.applicationConfigurations = []; | ||
this.indexToConfigurationClass = new Map(); | ||
this.configurationClassToApplicationConfiguration = new Map(); | ||
this.lastConfigurationId = 0; | ||
this.configurationClassToId = new Map(); | ||
} | ||
async init(applicationClass, applicationClassConstructorParameters) { | ||
const visited = new Set(); | ||
const firstApplicationConfiguration = new ApplicationConfiguration_1.ApplicationConfiguration(applicationClass, applicationClassConstructorParameters); | ||
const firstApplicationConfiguration = this.buildApplicationConfiguration(applicationClass, applicationClassConstructorParameters); | ||
const stack = [firstApplicationConfiguration]; | ||
@@ -55,3 +59,3 @@ while (stack.length > 0) { | ||
if (!visited.has(it.constructor)) { | ||
stack.push(new ApplicationConfiguration_1.ApplicationConfiguration(it.constructor, it.args)); | ||
stack.push(this.buildApplicationConfiguration(it.constructor, it.args)); | ||
} | ||
@@ -61,11 +65,30 @@ }); | ||
this.applicationConfigurations.forEach((applicationConfiguration, index) => { | ||
applicationConfiguration.init(index); | ||
const configurationClass = applicationConfiguration.classConstructor; | ||
const configurationId = this.configurationClassToId.get(configurationClass) ?? this.lastConfigurationId++; | ||
if (!this.configurationClassToId.has(configurationClass)) { | ||
this.configurationClassToId.set(configurationClass, configurationId); | ||
} | ||
applicationConfiguration.init(index, configurationId); | ||
this.indexToConfigurationClass.set(index, configurationClass); | ||
}); | ||
} | ||
mapConfigurations(callback) { | ||
return this.applicationConfigurations.map((applicationConfiguration) => { | ||
return Array.from(this.configurationClassToApplicationConfiguration.values()).map((applicationConfiguration) => { | ||
return callback(applicationConfiguration); | ||
}); | ||
} | ||
getConfigurationByIndex(index) { | ||
if (!this.applicationConfigurations[index]) { | ||
throw new Error(`No configuration found for index ${index}`); | ||
} | ||
return this.applicationConfigurations[index]; | ||
} | ||
buildApplicationConfiguration(...args) { | ||
const applicationConfiguration = this.configurationClassToApplicationConfiguration.get(args[0]) ?? new ApplicationConfiguration_1.ApplicationConfiguration(...args); | ||
if (!this.configurationClassToApplicationConfiguration.has(args[0])) { | ||
this.configurationClassToApplicationConfiguration.set(args[0], applicationConfiguration); | ||
} | ||
return applicationConfiguration; | ||
} | ||
} | ||
exports.ApplicationConfigurationFactory = ApplicationConfigurationFactory; |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
101306
2248
+ Added@clawject/core@1.1.2(transitive)
- Removed@clawject/core@1.1.1(transitive)
Updated@clawject/core@1.1.2