dependency-injection-cat
Version:
DI Cat is a truly clean DI-container, which allows you not to pollute your business logic with decorators from DI/IOC libraries!
34 lines (33 loc) • 2.69 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getCallExpressionForBean = void 0;
var getGlobalContextIdentifierFromArrayOrCreateNewAndPush_1 = require("../utils/getGlobalContextIdentifierFromArrayOrCreateNewAndPush");
var typescript_1 = require("typescript");
var isBeanDependencyFromCurrentContext_1 = require("../utils/isBeanDependencyFromCurrentContext");
var QualifiedType_1 = require("../../ts-helpers/type-qualifier/QualifiedType");
var getCallExpressionForBean = function (qualifiedBean, dependencyParentBean, contextDescriptorToIdentifierList) {
if ((0, isBeanDependencyFromCurrentContext_1.isBeanDependencyFromCurrentContext)(qualifiedBean, dependencyParentBean)) {
var beanAccessExpression_1 = typescript_1.factory.createCallExpression(typescript_1.factory.createPropertyAccessExpression(typescript_1.factory.createThis(), typescript_1.factory.createIdentifier('getPrivateBean')), undefined, [typescript_1.factory.createStringLiteral(qualifiedBean.classMemberName)]);
if (qualifiedBean.nestedProperty !== null) {
beanAccessExpression_1 = typescript_1.factory.createPropertyAccessExpression(beanAccessExpression_1, typescript_1.factory.createIdentifier(qualifiedBean.nestedProperty));
}
if (qualifiedBean.qualifiedType.kind === QualifiedType_1.QualifiedTypeKind.LIST) {
return typescript_1.factory.createSpreadElement(beanAccessExpression_1);
}
else {
return beanAccessExpression_1;
}
}
var globalContextIdentifier = (0, getGlobalContextIdentifierFromArrayOrCreateNewAndPush_1.getGlobalContextIdentifierFromArrayOrCreateNewAndPush)(qualifiedBean.contextDescriptor, contextDescriptorToIdentifierList);
var beanAccessExpression = typescript_1.factory.createCallExpression(typescript_1.factory.createPropertyAccessExpression(typescript_1.factory.createPropertyAccessExpression(globalContextIdentifier, typescript_1.factory.createIdentifier(globalContextIdentifier.text)), typescript_1.factory.createIdentifier('getPrivateBean')), undefined, [typescript_1.factory.createStringLiteral(qualifiedBean.classMemberName)]);
if (qualifiedBean.nestedProperty !== null) {
beanAccessExpression = typescript_1.factory.createPropertyAccessExpression(beanAccessExpression, typescript_1.factory.createIdentifier(qualifiedBean.nestedProperty));
}
if (qualifiedBean.qualifiedType.kind === QualifiedType_1.QualifiedTypeKind.LIST) {
return typescript_1.factory.createSpreadElement(beanAccessExpression);
}
else {
return beanAccessExpression;
}
};
exports.getCallExpressionForBean = getCallExpressionForBean;