inceptum
Version:
hipages take on the foundational library for enterprise-grade apps written in NodeJS
51 lines • 2.44 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.WebRoutingInspector = void 0;
const BaseSingletonDefinition_1 = require("../ioc/objectdefinition/BaseSingletonDefinition");
const AbstractObjectDefinitionInspector_1 = require("../ioc/AbstractObjectDefinitionInspector");
const WebDecorators_1 = require("./WebDecorators");
class WebRoutingInspector extends AbstractObjectDefinitionInspector_1.AbstractObjectDefinitionInspector {
constructor(definition) {
super();
this.routesToRegister = [];
this.definition = definition;
this.definition.setPropertyByValue('routesToRegister', this.routesToRegister);
}
// tslint:disable-next-line:prefer-function-over-method
interestedIn(objectDefinition) {
if (!(objectDefinition instanceof BaseSingletonDefinition_1.BaseSingletonDefinition)) {
return false;
}
return (objectDefinition.getProducedClass().routes !== undefined) ||
(0, WebDecorators_1.hasWebDecoratorMetadata)(objectDefinition.getProducedClass().prototype);
}
/**
* @param {SingletonDefinition} objectDefinition singleton definition
*/
// tslint:disable-next-line:prefer-function-over-method
doInspect(objectDefinition) {
if (objectDefinition.getProducedClass().routes) {
// Old way
this.processRoutes(objectDefinition.getProducedClass().routes || [], objectDefinition);
}
if ((0, WebDecorators_1.hasWebDecoratorMetadata)(objectDefinition.getProducedClass().prototype)) {
// New way
this.processRoutes((0, WebDecorators_1.getWebDecoratorMetadata)(objectDefinition.getProducedClass().prototype).routes || [], objectDefinition);
}
}
processRoutes(routes, objectDefinition) {
routes.forEach((route, index) => {
const instanceName = `instance_${objectDefinition.getName()}_${index}`;
this.routesToRegister.push({
verb: route.verb || 'get',
path: route.path,
methodName: route.methodName,
instanceProperty: instanceName,
objectName: objectDefinition.getName(),
});
this.definition.setPropertyByRef(instanceName, objectDefinition.getName());
});
}
}
exports.WebRoutingInspector = WebRoutingInspector;
//# sourceMappingURL=WebRoutingInspector.js.map