@notchjs/express
Version:
A dependency injection based express adapter (Node.js)
88 lines (87 loc) • 4.27 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ExpressModule = void 0;
const express = require("express");
const constants_1 = require("./constants");
const error_handler_host_1 = require("./error-handler-host");
const error_response_generator_host_1 = require("./error-response-generator-host");
const express_adapter_1 = require("./express-adapter");
const handler_1 = require("./handler");
const middleware_1 = require("./middleware");
const middleware_container_1 = require("./middleware-container");
const middleware_factory_1 = require("./middleware-factory");
const middleware_proxy_1 = require("./middleware-proxy");
const response_1 = require("./response");
class ExpressModule {
register() {
return {
providers: [
{
provide: handler_1.NotFoundHandler.name,
useClass: handler_1.NotFoundHandler,
},
{
provide: response_1.ErrorResponseGenerator.name,
useClass: response_1.ErrorResponseGenerator,
},
{
provide: error_response_generator_host_1.ErrorResponseGeneratorHost.name,
useFactory: (container) => {
const responseGenerator = container.has(constants_1.ERROR_RESPONSE_GENERATOR)
? container.get(constants_1.ERROR_RESPONSE_GENERATOR)
: container.get(response_1.ErrorResponseGenerator.name);
return new error_response_generator_host_1.ErrorResponseGeneratorHost(responseGenerator);
},
},
{
provide: middleware_1.ErrorHandler.name,
useFactory: (container) => {
const generatorHost = container.get(error_response_generator_host_1.ErrorResponseGeneratorHost.name);
return new middleware_1.ErrorHandler(generatorHost.responseGenerator);
},
},
{
provide: error_handler_host_1.ErrorHandlerHost.name,
useFactory: (container) => {
const errorHandler = container.has(constants_1.ERROR_HANDLER)
? container.get(constants_1.ERROR_HANDLER)
: undefined;
return new error_handler_host_1.ErrorHandlerHost(errorHandler);
},
},
{
provide: middleware_container_1.MiddlewareContainer.name,
useFactory: (container) => {
return new middleware_container_1.MiddlewareContainer(container);
},
},
{
provide: middleware_factory_1.MiddlewareFactory.name,
useFactory: (container) => {
return new middleware_factory_1.MiddlewareFactory(container.get(middleware_container_1.MiddlewareContainer.name));
},
},
{
provide: middleware_proxy_1.MiddlewareProxy.name,
useFactory: (container) => {
const errorHandlerHost = container.get(error_handler_host_1.ErrorHandlerHost.name);
return new middleware_proxy_1.MiddlewareProxy(container.get(middleware_factory_1.MiddlewareFactory.name), errorHandlerHost.errorHandler);
},
},
{
provide: express_adapter_1.ExpressAdapter.name,
useFactory: (container) => {
const config = container.has('config')
? container.get('config')
: {};
const proxy = container.get(middleware_proxy_1.MiddlewareProxy.name);
return new express_adapter_1.ExpressAdapter(express(), proxy, {
config: config.notch,
});
},
},
],
};
}
}
exports.ExpressModule = ExpressModule;