lib/Factory.ts (29 lines of code) (raw):
import { MongoManager } from './MongoManager';
import { HostsManager } from './HostsManager';
class Factory {
private get _initializedError() {
return new Error("Factory.load() must be called first");
}
private _mongoManager: MongoManager;
private _hostsManager: HostsManager;
get mongoManager() {
if (!this._mongoManager) {
throw this._initializedError;
}
return this._mongoManager;
}
get hostsManager() {
if (!this._hostsManager) {
throw this._initializedError;
}
return this._hostsManager;
}
async load() {
// Start by initializing the host manager (needed for mongo manager)
this._hostsManager = new HostsManager();
await this._hostsManager.load();
// Then we can initialize the mongo manager
this._mongoManager = new MongoManager();
await this._mongoManager.load();
}
}
const factory = new Factory();
export default factory;