UNPKG

2.38 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const BaseSingletonDefinition_1 = require("../ioc/objectdefinition/BaseSingletonDefinition");
4const AbstractObjectDefinitionInspector_1 = require("../ioc/AbstractObjectDefinitionInspector");
5const WebDecorators_1 = require("./WebDecorators");
6class WebRoutingInspector extends AbstractObjectDefinitionInspector_1.AbstractObjectDefinitionInspector {
7 constructor(definition) {
8 super();
9 this.routesToRegister = [];
10 this.definition = definition;
11 this.definition.setPropertyByValue('routesToRegister', this.routesToRegister);
12 }
13 // tslint:disable-next-line:prefer-function-over-method
14 interestedIn(objectDefinition) {
15 if (!(objectDefinition instanceof BaseSingletonDefinition_1.BaseSingletonDefinition)) {
16 return false;
17 }
18 return (objectDefinition.getProducedClass().routes !== undefined) ||
19 WebDecorators_1.hasWebDecoratorMetadata(objectDefinition.getProducedClass().prototype);
20 }
21 /**
22 * @param {SingletonDefinition} objectDefinition singleton definition
23 */
24 // tslint:disable-next-line:prefer-function-over-method
25 doInspect(objectDefinition) {
26 if (objectDefinition.getProducedClass().routes) {
27 // Old way
28 this.processRoutes(objectDefinition.getProducedClass().routes || [], objectDefinition);
29 }
30 if (WebDecorators_1.hasWebDecoratorMetadata(objectDefinition.getProducedClass().prototype)) {
31 // New way
32 this.processRoutes(WebDecorators_1.getWebDecoratorMetadata(objectDefinition.getProducedClass().prototype).routes || [], objectDefinition);
33 }
34 }
35 processRoutes(routes, objectDefinition) {
36 routes.forEach((route, index) => {
37 const instanceName = `instance_${objectDefinition.getName()}_${index}`;
38 this.routesToRegister.push({
39 verb: route.verb || 'get',
40 path: route.path,
41 methodName: route.methodName,
42 instanceProperty: instanceName,
43 objectName: objectDefinition.getName(),
44 });
45 this.definition.setPropertyByRef(instanceName, objectDefinition.getName());
46 });
47 }
48}
49exports.WebRoutingInspector = WebRoutingInspector;
50//# sourceMappingURL=WebRoutingInspector.js.map
\No newline at end of file