UNPKG

tsunamy

Version:

A new typesript framework

50 lines (49 loc) 1.95 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); require("reflect-metadata"); var Injector_1 = require("../Injector"); var Router_1 = require("../Router"); var ModuleWithProviders = /** @class */ (function () { function ModuleWithProviders() { } return ModuleWithProviders; }()); var idVar = 0; function TyModule(value) { var injector; return function (target) { value.id = idVar.toString(); idVar++; injector = new Injector_1.Injector(); if (value.declarations) { value.declarations.map(function (declaration) { var controllerInstance = injector.resolve(declaration); Reflect.defineMetadata('moduleId', value.id, declaration); addRoutes(controllerInstance, 'RequestMapping', null); addRoutes(controllerInstance, 'GetMapping', 'GET'); addRoutes(controllerInstance, 'PostMapping', 'POST'); addRoutes(controllerInstance, 'PutMapping', 'PUT'); addRoutes(controllerInstance, 'DeleteMapping', 'DELETE'); }); } }; } exports.TyModule = TyModule; function addRoutes(controllerInstance, metadataKey, method) { var metadatas = Reflect.getMetadata('Controller', controllerInstance); var controllerPath = ''; if (metadatas && metadatas.path) { controllerPath = metadatas.path; } var routes = Reflect.getMetadata(metadataKey, controllerInstance) || []; routes.map(function (route) { Router_1.Router.add(buildPath(controllerPath, route.path), (method ? method : route.method), route.functionName, controllerInstance); }); } function buildPath(controllerPath, routePath) { var routePathCalculated = ''; if (routePath && routePath !== '') { routePathCalculated = routePath.startsWith('/') ? routePath : '/' + routePath; } return controllerPath + routePathCalculated; }