@miracledevs/paradigm-express-webapi
Version:
An easy to use MVC WebApi implementation over Express.
43 lines • 1.84 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.HostBuilder = void 0;
const configuration_builder_1 = require("./configuration/configuration-builder");
const logger_1 = require("./logging/logger");
const paradigm_web_di_1 = require("@miracledevs/paradigm-web-di");
class HostBuilder {
useConfiguration(configurationMethod) {
this._configurationMethod = configurationMethod;
return this;
}
useLogging(loggingMethod) {
this._loggingMethod = loggingMethod;
return this;
}
useDependencyInjection(injectorMethod) {
this._injectorMethod = injectorMethod;
return this;
}
build(serverClass) {
const configurationBuilder = new configuration_builder_1.ConfigurationBuilder();
const logger = new logger_1.Logger();
const server = new serverClass();
let collection;
if (this._configurationMethod)
this._configurationMethod(configurationBuilder);
if (this._loggingMethod)
this._loggingMethod(logger);
if (this._injectorMethod)
collection = this._injectorMethod();
collection = collection || paradigm_web_di_1.DependencyCollection.globalCollection;
collection.registerSingleton(configuration_builder_1.ConfigurationBuilder, [], configurationBuilder);
collection.registerSingleton(logger_1.Logger, [], logger);
collection.registerSingleton(serverClass, [], server);
const container = collection.buildContainer(true);
server.setConfigurationBuilder(configurationBuilder);
server.setLogger(logger);
server.setDependencyContainer(container);
return server;
}
}
exports.HostBuilder = HostBuilder;
//# sourceMappingURL=host-builder.js.map