@namecheap/express-inversify
Version:
Some utilities for the development of express applications with Inversify
83 lines • 3.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getRawMetadata = exports.getRouteInfo = void 0;
const constants_1 = require("./constants");
const utils_1 = require("./utils");
function getRouteInfo(container) {
const raw = getRawMetadata(container);
return raw.map(r => {
const controllerId = r.controllerMetadata.target.name;
const endpoints = r.methodMetadata.map(m => {
const method = m.method.toUpperCase();
const controllerPath = r.controllerMetadata.path;
const actionPath = m.path;
const paramMetadata = r.parameterMetadata;
let args;
if (paramMetadata !== undefined) {
const paramMetadataForKey = paramMetadata[m.key] || undefined;
if (paramMetadataForKey) {
args = (r.parameterMetadata[m.key] || []).map(a => {
let type = '';
switch (a.type) {
case constants_1.PARAMETER_TYPE.RESPONSE:
type = '@response';
break;
case constants_1.PARAMETER_TYPE.REQUEST:
type = '@request';
break;
case constants_1.PARAMETER_TYPE.NEXT:
type = '@next';
break;
case constants_1.PARAMETER_TYPE.PARAMS:
type = '@requestParam';
break;
case constants_1.PARAMETER_TYPE.QUERY:
type = 'queryParam';
break;
case constants_1.PARAMETER_TYPE.BODY:
type = '@requestBody';
break;
case constants_1.PARAMETER_TYPE.HEADERS:
type = '@requestHeaders';
break;
case constants_1.PARAMETER_TYPE.COOKIES:
type = '@cookies';
break;
case constants_1.PARAMETER_TYPE.PRINCIPAL:
type = '@principal';
break;
default:
break;
}
return `${type} ${a.parameterName}`;
});
}
}
const details = {
route: `${method} ${controllerPath}${actionPath}`,
};
if (args) {
details.args = args;
}
return details;
});
return {
controller: controllerId,
endpoints,
};
});
}
exports.getRouteInfo = getRouteInfo;
function getRawMetadata(container) {
const controllers = (0, utils_1.getControllersFromContainer)(container, true);
return controllers.map(controller => {
const { constructor } = controller;
return {
controllerMetadata: (0, utils_1.getControllerMetadata)(constructor),
methodMetadata: (0, utils_1.getControllerMethodMetadata)(constructor),
parameterMetadata: (0, utils_1.getControllerParameterMetadata)(constructor),
};
});
}
exports.getRawMetadata = getRawMetadata;
//# sourceMappingURL=debug.js.map