UNPKG

@methodus/server

Version:
63 lines 2.96 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; Object.defineProperty(exports, "__esModule", { value: true }); const log_1 = require("../../log"); const express = require("express"); const fp_1 = require("../../fp"); let ExpressRouter = class ExpressRouter { constructor(obj, methodType, app) { this.routers = []; let methodus = fp_1.fp.maybeMethodus(obj); let proto = fp_1.fp.maybeProto(obj); const globalMiddlewares = []; if (methodus.middlewares) { methodus.middlewares.forEach(element => { if (element) { globalMiddlewares.push(element); } else { log_1.logger.error(this, 'could not load middleware'); } }); } const routerDataObject = {}; //build routes and verbs object Object.keys(methodus._descriptors).forEach(itemKey => { let item = methodus._descriptors[itemKey]; routerDataObject[item.route] = routerDataObject[item.route] || []; routerDataObject[item.route].push(item); }); Object.keys(routerDataObject).forEach((route) => { const autoRouter = express.Router(); routerDataObject[route].map((item) => { let verb = item.verb.toLowerCase(); let functionArray = [...globalMiddlewares]; if (item.middlewares) { log_1.logger.info(this, `loading middleware for ${item.propertyKey}`); item.middlewares.forEach(element => { if (element) { functionArray.push(element); } }); } functionArray.push(proto[item.propertyKey].bind(obj)); autoRouter[verb](route, ...functionArray); }); app.use('/', autoRouter); }); } }; ExpressRouter = __decorate([ log_1.LogClass(log_1.logger), __metadata("design:paramtypes", [Object, String, Object]) ], ExpressRouter); exports.ExpressRouter = ExpressRouter; //# sourceMappingURL=Router.js.map