inceptum
Version:
hipages take on the foundational library for enterprise-grade apps written in NodeJS
61 lines • 2.93 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ObjectDefinitionDecoratorInspector = void 0;
const BaseSingletonDefinition_1 = require("../objectdefinition/BaseSingletonDefinition");
const AbstractObjectDefinitionInspector_1 = require("../AbstractObjectDefinitionInspector");
const Decorator = require("../Decorators");
class ObjectDefinitionDecoratorInspector extends AbstractObjectDefinitionInspector_1.AbstractObjectDefinitionInspector {
// tslint:disable-next-line:prefer-function-over-method
interestedIn(objectDefinition) {
if (!(objectDefinition instanceof BaseSingletonDefinition_1.BaseSingletonDefinition)) {
return false;
}
return Decorator.hasDecoratorMetadata(objectDefinition.getProducedClass().prototype);
}
/**
* @param {BaseSingletonDefinition} objectDefinition singleton definition
*/
// tslint:disable-next-line:prefer-function-over-method
doInspect(objectDefinition) {
const metadata = Decorator.getDecoratorMetadata(objectDefinition.getProducedClass().prototype);
objectDefinition.withLazyLoading(metadata.lazy);
if (metadata.startMethod) {
objectDefinition.startFunction(metadata.startMethod);
}
if (metadata.stopMethod) {
objectDefinition.stopFunction(metadata.stopMethod);
}
metadata.groups.forEach((groupName) => objectDefinition.getContext().addObjectNameToGroup(groupName, objectDefinition.getName()));
metadata.autowire.forEach((val, key) => {
switch (val.substr(0, 1)) {
case '~':
objectDefinition.setPropertyByType(key, val.substr(1));
break;
case '*':
objectDefinition.setPropertyByTypeArray(key, val.substr(1));
break;
case '#':
const configKey = val.substr(1);
if (configKey.indexOf(':') > 0) {
const parts = configKey.split(':', 2);
objectDefinition.setPropertyByConfig(key, parts[0], parts[1]);
}
else {
objectDefinition.setPropertyByConfig(key, configKey, metadata.defaultValue.get(configKey));
}
break;
case '%':
objectDefinition.setPropertyByGroup(key, val.substr(1));
break;
case '&':
objectDefinition.setPropertyByDefinitionGroup(key, val.substr(1));
break;
default:
// By Name
objectDefinition.setPropertyByRef(key, val);
}
});
}
}
exports.ObjectDefinitionDecoratorInspector = ObjectDefinitionDecoratorInspector;
//# sourceMappingURL=ObjectDefinitionDecoratorInspector.js.map