@vulcan-sql/core
Version:
Core package of VulcanSQL
39 lines • 1.85 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.artifactBuilderModule = void 0;
const tslib_1 = require("tslib");
const inversify_1 = require("inversify");
const artifact_builder_1 = require("../../lib/artifact-builder/index");
const types_1 = require("../types");
const options_1 = require("../../options");
const artifactBuilderModule = (options) => new inversify_1.AsyncContainerModule((bind) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
// Options
bind(types_1.TYPES.ArtifactBuilderInputOptions).toConstantValue(options);
bind(types_1.TYPES.ArtifactBuilderOptions)
.to(options_1.ArtifactBuilderOptions)
.inSingletonScope();
// PersistentStore
bind(types_1.TYPES.Factory_PersistentStore).toAutoNamedFactory(types_1.TYPES.Extension_PersistentStore);
bind(types_1.TYPES.PersistentStore)
.toDynamicValue((context) => {
const factory = context.container.get(types_1.TYPES.Factory_PersistentStore);
const options = context.container.get(types_1.TYPES.ArtifactBuilderOptions);
return factory(options.provider);
})
.inSingletonScope();
// Serializer
bind(types_1.TYPES.Factory_Serializer).toAutoNamedFactory(types_1.TYPES.Extension_Serializer);
bind(types_1.TYPES.Serializer)
.toDynamicValue((context) => {
const factory = context.container.get(types_1.TYPES.Factory_Serializer);
const options = context.container.get(types_1.TYPES.ArtifactBuilderOptions);
return factory(options.serializer);
})
.inSingletonScope();
// ArtifactBuilder
bind(types_1.TYPES.ArtifactBuilder)
.to(artifact_builder_1.VulcanArtifactBuilder)
.inSingletonScope();
}));
exports.artifactBuilderModule = artifactBuilderModule;
//# sourceMappingURL=artifactBuilder.js.map