UNPKG

inceptum

Version:

hipages take on the foundational library for enterprise-grade apps written in NodeJS

61 lines 2.93 kB
"use strict"; 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