@vulcan-sql/core
Version:
Core package of VulcanSQL
48 lines • 2.34 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Container = void 0;
const tslib_1 = require("tslib");
const inversify_1 = require("inversify");
const options_1 = require("../options");
const modules_1 = require("./modules");
const modules_2 = require("./modules");
const types_1 = require("./types");
class Container {
constructor() {
this.inversifyContainer = new inversify_1.Container();
}
get(type) {
return this.inversifyContainer.get(type);
}
load(options) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
// Project options
this.inversifyContainer
.bind(types_1.TYPES.ProjectInputOptions)
.toConstantValue(options);
this.inversifyContainer.bind(types_1.TYPES.ProjectOptions).to(options_1.ProjectOptions);
yield this.inversifyContainer.loadAsync((0, modules_2.artifactBuilderModule)(options.artifact));
yield this.inversifyContainer.loadAsync((0, modules_1.profilesModule)(options.profiles));
yield this.inversifyContainer.loadAsync((0, modules_2.templateEngineModule)(options.template));
yield this.inversifyContainer.loadAsync((0, modules_2.validatorLoaderModule)());
yield this.inversifyContainer.loadAsync((0, modules_1.extensionModule)(options));
yield this.inversifyContainer.loadAsync((0, modules_1.documentModule)(options.document));
// data source module depends on extensionModule and profileModule.
const profileLoader = this.inversifyContainer.get(types_1.TYPES.ProfileLoader);
const profiles = yield profileLoader.getProfiles();
yield this.inversifyContainer.loadAsync((0, modules_2.dataSourceModule)(profiles, options.cache));
yield this.inversifyContainer.loadAsync((0, modules_2.executorModule)());
yield this.inversifyContainer.loadAsync((0, modules_2.cacheLayerModule)(options.cache));
});
}
unload() {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
yield this.inversifyContainer.unbindAllAsync();
});
}
getInversifyContainer() {
return this.inversifyContainer;
}
}
exports.Container = Container;
//# sourceMappingURL=container.js.map