dinoloop-es8
Version:
A lightweight REST API Library for building scalable Node.js server-side applications powered by Typescript
76 lines • 6.41 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const dino_container_1 = require("./dino.container");
const utility_1 = require("../utility");
const middlewares_1 = require("../builtin/middlewares");
class AppContainer {
constructor(app) {
this.controllers = [];
this.baseUri = '';
this.startMiddleware = [];
this.endMiddleware = [];
this.appStartMiddleware = [];
this.errorMiddleware = [];
this.raiseModelError = false;
this.enableTaskContext = false;
this.app = app;
}
build() {
let dinoContainer = dino_container_1.DinoContainer.create({
app: this.app,
raiseModelError: this.raiseModelError,
enableTaskContext: this.enableTaskContext,
routerCallback: this.useRouter,
baseUri: this.baseUri,
diContainer: this.diContainer,
diResolveCb: this.diResolveCallback
});
// attach dino property to response object on every request start
dinoContainer.builtInRequestStartMiddleware(middlewares_1.DinoStartMiddleware);
if (this.enableTaskContext) {
dinoContainer.builtInRequestStartMiddleware(middlewares_1.TaskContextMiddleware);
}
if (!utility_1.DataUtility.isUndefinedOrNull(this.routeNotFoundMiddleware)) {
dinoContainer.routeNotFoundMiddleware(this.routeNotFoundMiddleware);
}
for (const middleware of this.startMiddleware) {
dinoContainer.requestStartMiddleware(middleware);
}
for (const controller of this.controllers) {
dinoContainer.registerController(controller);
}
for (const middleware of this.endMiddleware) {
dinoContainer.requestEndMiddleware(middleware);
}
// Note:- built-in RequestEndMiddleware must be registered
// after registering user requestEndMiddlewares
// register built-in RequestEndMiddleware
dinoContainer.builtInRequestEndMiddleware(middlewares_1.HttpResponseMessageMiddleware);
// register ResponseEndMiddleware as the last built-in RequestEndMiddleware
dinoContainer.builtInRequestEndMiddleware(middlewares_1.ResponseEndMiddleware);
for (const middleware of this.errorMiddleware) {
dinoContainer.registerErrorMiddleware(middleware);
}
// Note:- built-in ErrorMiddleware must be registered
// after registering user ErrorMiddlewares
dinoContainer.builtInErrorMiddleware(middlewares_1.RouteExceptionMiddleware);
dinoContainer.builtInErrorMiddleware(middlewares_1.HttpResponseExceptionMiddleware);
dinoContainer.builtInErrorMiddleware(middlewares_1.ActionParamExceptionMiddleware);
// Register the application error controller
// This would be the last error middleware to handle error object
// make sure to register only after registering ErrorMiddleWares
if (!utility_1.DataUtility.isUndefinedOrNull(this.errorController)) {
dinoContainer.registerErrorController(this.errorController);
}
// After binding to express
// Start executing initialization code using appStartMiddleware
for (const middleware of this.appStartMiddleware) {
dinoContainer.appStartMiddleware(middleware);
}
}
static create(app) {
return new AppContainer(app);
}
}
exports.AppContainer = AppContainer;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNvbnRhaW5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2R1bGVzL2NvcmUvYXBwLmNvbnRhaW5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLHFEQUFpRDtBQUNqRCx3Q0FBeUM7QUFDekMsd0RBUWdDO0FBR2hDO0lBZ0JJLFlBQVksR0FBWTtRQWR4QixnQkFBVyxHQUFlLEVBQUUsQ0FBQztRQUM3QixZQUFPLEdBQVcsRUFBRSxDQUFDO1FBQ3JCLG9CQUFlLEdBQWUsRUFBRSxDQUFDO1FBQ2pDLGtCQUFhLEdBQWUsRUFBRSxDQUFDO1FBQy9CLHVCQUFrQixHQUFlLEVBQUUsQ0FBQztRQUtwQyxvQkFBZSxHQUFlLEVBQUUsQ0FBQztRQUNqQyxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4QixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFJdEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFDbkIsQ0FBQztJQUVELEtBQUs7UUFFRCxJQUFJLGFBQWEsR0FBRyw4QkFBYSxDQUFDLE1BQU0sQ0FBQztZQUNyQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7WUFDYixlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWU7WUFDckMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjtZQUN6QyxjQUFjLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDOUIsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixXQUFXLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjtTQUN0QyxDQUFDLENBQUM7UUFFSCxpRUFBaUU7UUFDakUsYUFBYSxDQUFDLDZCQUE2QixDQUFDLGlDQUFtQixDQUFDLENBQUM7UUFFakUsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDeEIsYUFBYSxDQUFDLDZCQUE2QixDQUFDLG1DQUFxQixDQUFDLENBQUM7U0FDdEU7UUFFRCxJQUFJLENBQUMscUJBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsRUFBRTtZQUM5RCxhQUFhLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7U0FDdkU7UUFFRCxLQUFLLE1BQU0sVUFBVSxJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDM0MsYUFBYSxDQUFDLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ3BEO1FBRUQsS0FBSyxNQUFNLFVBQVUsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3ZDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUNoRDtRQUVELEtBQUssTUFBTSxVQUFVLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN6QyxhQUFhLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDbEQ7UUFFRCwyREFBMkQ7UUFDM0QsK0NBQStDO1FBRS9DLHlDQUF5QztRQUN6QyxhQUFhLENBQUMsMkJBQTJCLENBQUMsMkNBQTZCLENBQUMsQ0FBQztRQUV6RSwyRUFBMkU7UUFDM0UsYUFBYSxDQUFDLDJCQUEyQixDQUFDLG1DQUFxQixDQUFDLENBQUM7UUFFakUsS0FBSyxNQUFNLFVBQVUsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQzNDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUNyRDtRQUVELHNEQUFzRDtRQUN0RCwwQ0FBMEM7UUFFMUMsYUFBYSxDQUFDLHNCQUFzQixDQUFDLHNDQUF3QixDQUFDLENBQUM7UUFDL0QsYUFBYSxDQUFDLHNCQUFzQixDQUFDLDZDQUErQixDQUFDLENBQUM7UUFDdEUsYUFBYSxDQUFDLHNCQUFzQixDQUFDLDRDQUE4QixDQUFDLENBQUM7UUFFckUsNENBQTRDO1FBQzVDLGlFQUFpRTtRQUNqRSxnRUFBZ0U7UUFDaEUsSUFBSSxDQUFDLHFCQUFXLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFO1lBQ3RELGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDL0Q7UUFFRCwyQkFBMkI7UUFDM0IsK0RBQStEO1FBQy9ELEtBQUssTUFBTSxVQUFVLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQzlDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUNoRDtJQUNMLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQVk7UUFDdEIsT0FBTyxJQUFJLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxDQUFDO0NBQ0o7QUE1RkQsb0NBNEZDIn0=