UNPKG

@vulcan-sql/core

Version:
48 lines 2.34 kB
"use strict"; 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