@hashgraph/solo
Version:
An opinionated CLI tool to deploy and manage private Hedera Networks.
27 lines (21 loc) • 791 B
text/typescript
// SPDX-License-Identifier: Apache-2.0
import {type BeanDefinitionSupplier} from './bean-definition-supplier.js';
import {type DependencyContainer} from 'tsyringe-neo';
export class BeanFactorySupplier<T> implements BeanDefinitionSupplier {
private cachedInstance: T;
public constructor(
public readonly token: symbol,
public readonly factory: (container: DependencyContainer) => T,
public readonly singleton: boolean = true,
) {}
public register(container: DependencyContainer): void {
container.register(this.token, {
useFactory: (c: DependencyContainer): T => {
if (this.singleton && !this.cachedInstance) {
this.cachedInstance = this.factory(c);
}
return this.cachedInstance ?? this.factory(c);
},
});
}
}