redis-smq-rest-api
Version:
A RESTful API for RedisSMQ
42 lines • 1.46 kB
JavaScript
import * as path from 'path/posix';
const resourcePath = [];
const resourceTags = [];
function isResourceDescription(c) {
return !!c && typeof c === 'object' && Object.keys(c).includes('handler');
}
function getResourceControllerParams(controller) {
const controllerName = controller.name;
const controllerRoutePath = path.resolve(...resourcePath);
return {
controllerRoutePath,
controllerName,
controller,
};
}
function getResourceTags() {
return resourceTags.filter((i) => i.length).at(-1);
}
export async function parseRoutingMap(routingMap, fn) {
if (routingMap instanceof Array) {
for (const item of routingMap) {
await parseRoutingMap(item, fn);
}
}
else {
if (isResourceDescription(routingMap)) {
const { handler, description, method, payload } = routingMap;
const { controller, controllerName, controllerRoutePath } = getResourceControllerParams(handler);
const tags = getResourceTags();
await fn(controller, controllerName, method, payload, controllerRoutePath, description, tags);
}
else {
const { path, tags = [], resource } = routingMap;
resourcePath.push(path);
resourceTags.push(tags);
await parseRoutingMap(resource, fn);
resourcePath.pop();
resourceTags.pop();
}
}
}
//# sourceMappingURL=parser.js.map