UNPKG

routing-controllers

Version:

Create structured, declarative and beautifully organized class-based controllers with heavy decorators usage for Express / Koa using TypeScript.

242 lines 11.7 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getMetadataArgsStorage = getMetadataArgsStorage; exports.useExpressServer = useExpressServer; exports.createExpressServer = createExpressServer; exports.useKoaServer = useKoaServer; exports.createKoaServer = createKoaServer; exports.createServer = createServer; exports.createExecutor = createExecutor; exports.createParamDecorator = createParamDecorator; const ExpressDriver_1 = require("./driver/express/ExpressDriver"); const KoaDriver_1 = require("./driver/koa/KoaDriver"); const MetadataArgsStorage_1 = require("./metadata-builder/MetadataArgsStorage"); const RoutingControllers_1 = require("./RoutingControllers"); const importClassesFromDirectories_1 = require("./util/importClassesFromDirectories"); // ------------------------------------------------------------------------- // Main exports // ------------------------------------------------------------------------- __exportStar(require("./container"), exports); __exportStar(require("./decorator/All"), exports); __exportStar(require("./decorator/Authorized"), exports); __exportStar(require("./decorator/Body"), exports); __exportStar(require("./decorator/BodyParam"), exports); __exportStar(require("./decorator/ContentType"), exports); __exportStar(require("./decorator/Controller"), exports); __exportStar(require("./decorator/CookieParam"), exports); __exportStar(require("./decorator/CookieParams"), exports); __exportStar(require("./decorator/Ctx"), exports); __exportStar(require("./decorator/CurrentUser"), exports); __exportStar(require("./decorator/Delete"), exports); __exportStar(require("./decorator/Get"), exports); __exportStar(require("./decorator/Head"), exports); __exportStar(require("./decorator/Header"), exports); __exportStar(require("./decorator/HeaderParam"), exports); __exportStar(require("./decorator/HeaderParams"), exports); __exportStar(require("./decorator/HttpCode"), exports); __exportStar(require("./decorator/Interceptor"), exports); __exportStar(require("./decorator/JsonController"), exports); __exportStar(require("./decorator/Location"), exports); __exportStar(require("./decorator/Method"), exports); __exportStar(require("./decorator/Middleware"), exports); __exportStar(require("./decorator/OnNull"), exports); __exportStar(require("./decorator/OnUndefined"), exports); __exportStar(require("./decorator/Param"), exports); __exportStar(require("./decorator/Params"), exports); __exportStar(require("./decorator/Patch"), exports); __exportStar(require("./decorator/Post"), exports); __exportStar(require("./decorator/Put"), exports); __exportStar(require("./decorator/QueryParam"), exports); __exportStar(require("./decorator/QueryParams"), exports); __exportStar(require("./decorator/Redirect"), exports); __exportStar(require("./decorator/Render"), exports); __exportStar(require("./decorator/Req"), exports); __exportStar(require("./decorator/Res"), exports); __exportStar(require("./decorator/ResponseClassTransformOptions"), exports); __exportStar(require("./decorator/Session"), exports); __exportStar(require("./decorator/SessionParam"), exports); __exportStar(require("./decorator/State"), exports); __exportStar(require("./decorator/UploadedFile"), exports); __exportStar(require("./decorator/UploadedFiles"), exports); __exportStar(require("./decorator/UseAfter"), exports); __exportStar(require("./decorator/UseBefore"), exports); __exportStar(require("./decorator/UseInterceptor"), exports); __exportStar(require("./decorator-options/BodyOptions"), exports); __exportStar(require("./decorator-options/ParamOptions"), exports); __exportStar(require("./decorator-options/UploadOptions"), exports); __exportStar(require("./http-error/HttpError"), exports); __exportStar(require("./http-error/InternalServerError"), exports); __exportStar(require("./http-error/BadRequestError"), exports); __exportStar(require("./http-error/ForbiddenError"), exports); __exportStar(require("./http-error/NotAcceptableError"), exports); __exportStar(require("./http-error/MethodNotAllowedError"), exports); __exportStar(require("./http-error/NotFoundError"), exports); __exportStar(require("./http-error/UnauthorizedError"), exports); __exportStar(require("./http-error/UnprocessableEntityError"), exports); __exportStar(require("./driver/express/ExpressMiddlewareInterface"), exports); __exportStar(require("./driver/express/ExpressErrorMiddlewareInterface"), exports); __exportStar(require("./driver/koa/KoaMiddlewareInterface"), exports); __exportStar(require("./metadata-builder/MetadataArgsStorage"), exports); __exportStar(require("./metadata/ActionMetadata"), exports); __exportStar(require("./metadata/ControllerMetadata"), exports); __exportStar(require("./metadata/InterceptorMetadata"), exports); __exportStar(require("./metadata/MiddlewareMetadata"), exports); __exportStar(require("./metadata/ParamMetadata"), exports); __exportStar(require("./metadata/ResponseHandleMetadata"), exports); __exportStar(require("./metadata/UseMetadata"), exports); __exportStar(require("./RoutingControllersOptions"), exports); __exportStar(require("./CustomParameterDecorator"), exports); __exportStar(require("./RoleChecker"), exports); __exportStar(require("./Action"), exports); __exportStar(require("./InterceptorInterface"), exports); __exportStar(require("./CurrentUserChecker"), exports); __exportStar(require("./AuthorizationChecker"), exports); __exportStar(require("./driver/BaseDriver"), exports); __exportStar(require("./driver/express/ExpressDriver"), exports); __exportStar(require("./driver/koa/KoaDriver"), exports); // ------------------------------------------------------------------------- // Main Functions // ------------------------------------------------------------------------- /** * Gets metadata args storage. * Metadata args storage follows the best practices and stores metadata in a global variable. */ function getMetadataArgsStorage() { if (!global.routingControllersMetadataArgsStorage) global.routingControllersMetadataArgsStorage = new MetadataArgsStorage_1.MetadataArgsStorage(); return global.routingControllersMetadataArgsStorage; } /** * Registers all loaded actions in your express application. */ function useExpressServer(expressServer, options) { const driver = new ExpressDriver_1.ExpressDriver(expressServer); return createServer(driver, options); } /** * Registers all loaded actions in your express application. */ function createExpressServer(options) { const driver = new ExpressDriver_1.ExpressDriver(); return createServer(driver, options); } /** * Registers all loaded actions in your koa application. */ function useKoaServer(koaApp, options) { const driver = new KoaDriver_1.KoaDriver(koaApp); return createServer(driver, options); } /** * Registers all loaded actions in your koa application. */ function createKoaServer(options) { const driver = new KoaDriver_1.KoaDriver(); return createServer(driver, options); } /** * Registers all loaded actions in your application using selected driver. */ function createServer(driver, options) { createExecutor(driver, options); return driver.app; } /** * Registers all loaded actions in your express application. */ function createExecutor(driver, options = {}) { // import all controllers and middlewares and error handlers (new way) let controllerClasses; if (options && options.controllers && options.controllers.length) { controllerClasses = options.controllers.filter(controller => controller instanceof Function); const controllerDirs = options.controllers.filter(controller => typeof controller === 'string'); controllerClasses.push(...(0, importClassesFromDirectories_1.importClassesFromDirectories)(controllerDirs)); } let middlewareClasses; if (options && options.middlewares && options.middlewares.length) { middlewareClasses = options.middlewares.filter(controller => controller instanceof Function); const middlewareDirs = options.middlewares.filter(controller => typeof controller === 'string'); middlewareClasses.push(...(0, importClassesFromDirectories_1.importClassesFromDirectories)(middlewareDirs)); } let interceptorClasses; if (options && options.interceptors && options.interceptors.length) { interceptorClasses = options.interceptors.filter(controller => controller instanceof Function); const interceptorDirs = options.interceptors.filter(controller => typeof controller === 'string'); interceptorClasses.push(...(0, importClassesFromDirectories_1.importClassesFromDirectories)(interceptorDirs)); } if (options && options.development !== undefined) { driver.developmentMode = options.development; } else { driver.developmentMode = process.env.NODE_ENV !== 'production'; } if (options.defaultErrorHandler !== undefined) { driver.isDefaultErrorHandlingEnabled = options.defaultErrorHandler; } else { driver.isDefaultErrorHandlingEnabled = true; } if (options.classTransformer !== undefined) { driver.useClassTransformer = options.classTransformer; } else { driver.useClassTransformer = true; } if (options.validation !== undefined) { driver.enableValidation = !!options.validation; if (options.validation instanceof Object) driver.validationOptions = options.validation; } else { driver.enableValidation = true; } driver.classToPlainTransformOptions = options.classToPlainTransformOptions; driver.plainToClassTransformOptions = options.plainToClassTransformOptions; if (options.errorOverridingMap !== undefined) driver.errorOverridingMap = options.errorOverridingMap; if (options.routePrefix !== undefined) driver.routePrefix = options.routePrefix; if (options.currentUserChecker !== undefined) driver.currentUserChecker = options.currentUserChecker; if (options.authorizationChecker !== undefined) driver.authorizationChecker = options.authorizationChecker; driver.cors = options.cors; // next create a controller executor new RoutingControllers_1.RoutingControllers(driver, options) .initialize() .registerInterceptors(interceptorClasses) .registerMiddlewares('before', middlewareClasses) .registerControllers(controllerClasses) .registerMiddlewares('after', middlewareClasses); // todo: register only for loaded controllers? } /** * Registers custom parameter decorator used in the controller actions. */ function createParamDecorator(options) { return function (object, method, index) { getMetadataArgsStorage().params.push({ type: 'custom-converter', object: object, method: method, index: index, parse: false, required: options.required, transform: options.value, }); }; } //# sourceMappingURL=index.js.map