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
JavaScript
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
;