miter
Version:
A typescript web framework based on ExpressJs based loosely on SailsJs
33 lines • 1.52 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const controller_1 = require("../../../metadata/router/controller");
const route_1 = require("../../../metadata/router/route");
require("reflect-metadata");
const _ = require("lodash");
function createRouteDecorator(pathOrMeta, method) {
if (typeof pathOrMeta === 'string')
pathOrMeta = { path: pathOrMeta };
if (typeof method !== 'undefined') {
if (pathOrMeta.method && pathOrMeta.method != method)
throw new Error(`Redeclaration of route method: ${pathOrMeta}`);
pathOrMeta.method = method;
}
else
pathOrMeta.method = pathOrMeta.method || 'get';
let meta = pathOrMeta;
return function (controller, routeName, routeFn) {
let controllerRoutes = Reflect.getOwnMetadata(controller_1.ControllerRoutesSym, controller) || [];
if (!controllerRoutes.find(route => route == routeName))
controllerRoutes.push(routeName);
Reflect.defineMetadata(controller_1.ControllerRoutesSym, controllerRoutes, controller);
let methodRoutes = Reflect.getOwnMetadata(route_1.RouteMetadataSym, controller, routeName) || [];
methodRoutes.unshift(_.merge({}, meta));
Reflect.defineMetadata(route_1.RouteMetadataSym, methodRoutes, controller, routeName);
};
}
exports.createRouteDecorator = createRouteDecorator;
function Route(meta) {
return createRouteDecorator(meta);
}
exports.Route = Route;
//# sourceMappingURL=route.decorator.js.map