UNPKG

dinoloop-es8

Version:

A lightweight REST API Library for building scalable Node.js server-side applications powered by Typescript

121 lines 7.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); // tslint:disable-next-line:no-implicit-dependencies no-require-imports no-var-requires require('source-map-support').install(); const utility_1 = require("../modules/utility"); const constants_1 = require("../modules/constants"); const middlewares_1 = require("../modules/builtin/middlewares"); const core_1 = require("../modules/core"); /** * Creates dino instance */ class Dino { /** * app - ExpressApp * , baseUri - application mounted path */ constructor(app, baseUri) { this.isBinded = false; this.appContainer = core_1.AppContainer.create(app); this.appContainer.baseUri = baseUri; this.appContainer.routeNotFoundMiddleware = middlewares_1.RouteNotFoundMiddleware; } /** * Register API controller */ registerController(controller) { this.appContainer.controllers.push(controller); } /** * Register RequestStart middleware */ requestStart(middleware) { this.appContainer.startMiddleware.push(middleware); } /** * Register RequestEnd middleware */ requestEnd(middleware) { this.appContainer.endMiddleware.push(middleware); } /** * Register ServerError middleware */ serverError(middleware) { this.appContainer.errorMiddleware.push(middleware); } /** * Register ApplicationStart middleware */ applicationStart(middleware) { this.appContainer.appStartMiddleware.push(middleware); } // Unlike others, We support only one application error controller /** * Register ApplicationError controller */ registerApplicationError(type) { this.appContainer.errorController = type; } /** * Register express Router handler */ useRouter(cb) { this.appContainer.useRouter = cb; } // Why this property required? // express fires the middlewares based on the mounted path, even though // the end route (controller route) is not matched. // To fix this, dino introduces RouteNotFoundMiddleware just to make sure, // middlewares are fired only when valid route is found at controller level. // However, on triggering this method RouteNotFoundMiddleware is disabled. // Highly suggested not to invoke this unless you have a reason to. /** * RouteNotFoundMiddleware is unregistered */ disableRouteNotFoundException() { this.appContainer.routeNotFoundMiddleware = undefined; } // This property enables orchestration of task/user contextual data for the entire request. // It guarantees to retain task/user context data across all services/middlewares for entire request. // Note: Inject IUserPrincipal in constructor dependencies and it maintains data for the entire request. /** * Reserved for future use */ enableUserIdentity() { this.appContainer.enableTaskContext = true; } // This method lets us choose between different di containers, // We can use angular di or inversify which are popular di containers for typescript. // the consumer has to pass di container and resolver callback to resolve dependency from container. /** * Configures Dino to use DIFramework */ dependencyResolver(injector, cb) { this.appContainer.diContainer = injector; this.appContainer.diResolveCallback = cb; } // Once the dino instance is bounded, user is not allowed to invoke .bind() again // since container is already created and bound to express instance /** * Binds the dino instance to express app * @Throws Error(Errors.routerNotRegistered) * @Throws Error(Errors.dinoAlreadyBinded) * @Throws Error(Errors.baseUriInvalid) */ bind() { if (this.isBinded) { throw new Error(constants_1.Errors.dinoAlreadyBinded); } if (utility_1.DataUtility.isUndefinedOrNull(this.appContainer.baseUri)) { throw new Error(constants_1.Errors.baseUriInvalid); } if (utility_1.DataUtility.isUndefinedOrNull(this.appContainer.useRouter)) { throw new Error(constants_1.Errors.routerNotRegistered); } this.isBinded = true; this.appContainer.build(); } } exports.Dino = Dino; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGluby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvZGluby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHVGQUF1RjtBQUN2RixPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUV4QyxnREFBaUQ7QUFDakQsb0RBQThDO0FBQzlDLGdFQUF5RTtBQUN6RSwwQ0FBK0M7QUFFL0M7O0dBRUc7QUFDSDtJQUlJOzs7T0FHRztJQUNILFlBQVksR0FBUSxFQUFFLE9BQWU7UUFON0IsYUFBUSxHQUFHLEtBQUssQ0FBQztRQU9yQixJQUFJLENBQUMsWUFBWSxHQUFHLG1CQUFZLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUNwQyxJQUFJLENBQUMsWUFBWSxDQUFDLHVCQUF1QixHQUFHLHFDQUF1QixDQUFDO0lBQ3hFLENBQUM7SUFFRDs7T0FFRztJQUNILGtCQUFrQixDQUFJLFVBQXVDO1FBQ3pELElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFZLENBQUksVUFBdUM7UUFDbkQsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRDs7T0FFRztJQUNILFVBQVUsQ0FBSSxVQUF1QztRQUNqRCxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVyxDQUFJLFVBQXVDO1FBQ2xELElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxnQkFBZ0IsQ0FBSSxVQUF1QztRQUN2RCxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsa0VBQWtFO0lBQ2xFOztPQUVHO0lBQ0gsd0JBQXdCLENBQUksSUFBaUM7UUFDekQsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO0lBQzdDLENBQUM7SUFFRDs7T0FFRztJQUNILFNBQVMsQ0FBQyxFQUFhO1FBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsOEJBQThCO0lBQzlCLHVFQUF1RTtJQUN2RSxtREFBbUQ7SUFDbkQsMEVBQTBFO0lBQzFFLDRFQUE0RTtJQUM1RSwwRUFBMEU7SUFDMUUsbUVBQW1FO0lBQ25FOztPQUVHO0lBQ0gsNkJBQTZCO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsdUJBQXVCLEdBQUcsU0FBUyxDQUFDO0lBQzFELENBQUM7SUFFRCwyRkFBMkY7SUFDM0YscUdBQXFHO0lBQ3JHLHdHQUF3RztJQUN4Rzs7T0FFRztJQUNILGtCQUFrQjtRQUNkLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO0lBQy9DLENBQUM7SUFFRCw4REFBOEQ7SUFDOUQscUZBQXFGO0lBQ3JGLG9HQUFvRztJQUNwRzs7T0FFRztJQUNILGtCQUFrQixDQUFJLFFBQVcsRUFDN0IsRUFBbUM7UUFDbkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO0lBQzdDLENBQUM7SUFFRCxpRkFBaUY7SUFDakYsbUVBQW1FO0lBQ25FOzs7OztPQUtHO0lBQ0gsSUFBSTtRQUNBLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQzdDO1FBQ0QsSUFBSSxxQkFBVyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDMUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQzFDO1FBQ0QsSUFBSSxxQkFBVyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDNUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7U0FDL0M7UUFFRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzlCLENBQUM7Q0FDSjtBQTFIRCxvQkEwSEMifQ==