inceptum
Version:
hipages take on the foundational library for enterprise-grade apps written in NodeJS
68 lines • 3.14 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const BaseSingletonDefinition_1 = require("../objectdefinition/BaseSingletonDefinition");
const AbstractObjectDefinitionInspector_1 = require("../AbstractObjectDefinitionInspector");
class ObjectDefinitionAutowiringInspector extends AbstractObjectDefinitionInspector_1.AbstractObjectDefinitionInspector {
static getAutowired(objectDefinition) {
return objectDefinition.getProducedClass().hasOwnProperty('autowire') ?
(objectDefinition.getProducedClass()).autowire : undefined;
}
// tslint:disable-next-line:prefer-function-over-method
interestedIn(objectDefinition) {
if (!(objectDefinition instanceof BaseSingletonDefinition_1.BaseSingletonDefinition)) {
return false;
}
return ObjectDefinitionAutowiringInspector.getAutowired(objectDefinition) !== undefined;
}
/**
* @param {BaseSingletonDefinition} objectDefinition singleton definition
*/
// tslint:disable-next-line:prefer-function-over-method
doInspect(objectDefinition) {
const autowire = ObjectDefinitionAutowiringInspector.getAutowired(objectDefinition);
if (autowire.constructorArgs) {
autowire.constructorArgs.forEach((val) => {
switch (val.substr(0, 1)) {
case '~':
objectDefinition.constructorParamByType(val.substr(1));
break;
case '*':
objectDefinition.constructorParamByTypeArray(val.substr(1));
break;
case '#':
objectDefinition.constructorParamByConfig(val.substr(1));
break;
default:
// By Name
objectDefinition.constructorParamByRef(val);
}
});
}
Object.keys(autowire).filter((key) => key !== 'constructorArgs').forEach((key) => {
const val = autowire[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);
}
break;
default:
// By Name
objectDefinition.setPropertyByRef(key, val);
}
});
}
}
exports.ObjectDefinitionAutowiringInspector = ObjectDefinitionAutowiringInspector;
//# sourceMappingURL=ObjectDefinitionAutowiringInspector.js.map